我的hadoop集群中加载了tarball(access.logs.tar.gz)中的日志文件。我想知道的是他们的方式直接加载到Pig没有解开它?
d4so4syb1#
@克里斯怀特的回答在技术上是正确的,你应该接受他的回答而不是我的(至少在我看来)。你得离开这里 tar.gz hadoop文件。gzip文件是不可拆分的,因此如果gzip文件很大,则会在Map器中看到热点。例如,如果你有 .tar.gz 如果文件大小为100gb,则无法拆分计算。另一方面,假设它们很小。在这种情况下,Pig会做一个很好的工作,收集他们在一起,分裂的问题消失了。这有一个缺点,那就是现在您要用namenode处理成吨的小文件。而且,由于文件很小,所以将文件转换为更合理的格式在计算上应该相对便宜。那么你应该把这些文件重新格式化成什么格式呢?好问题!仅仅将它们连接到一个大的块级压缩序列文件可能是最具挑战性的,但在性能方面是最有价值的。另一种方法是完全忽略压缩,只将这些文件分解出来,或者至少将它们串联起来(在没有压缩的情况下,确实可以看到性能的提高)。最后,您可以将文件blob成~100mb的块,然后gzip它们。我认为在piggybank中编写某种tarball加载器是完全合理的,但我个人更愿意将数据以不同的方式进行布局。
tar.gz
.tar.gz
5vf7fwbs2#
pigstorage将识别文件是否被压缩(扩展名为.gz,实际上是在pigtextinputformat扩展的textinputformat中实现的),但之后您将处理tar文件。如果您能够处理tar中文件之间的头行,那么您可以按原样使用pigstorage,否则您需要编写pigtextinputformat的扩展名来处理剥离每个文件之间的tar头行
2条答案
按热度按时间d4so4syb1#
@克里斯怀特的回答在技术上是正确的,你应该接受他的回答而不是我的(至少在我看来)。
你得离开这里
tar.gz
hadoop文件。gzip文件是不可拆分的,因此如果gzip文件很大,则会在Map器中看到热点。例如,如果你有.tar.gz
如果文件大小为100gb,则无法拆分计算。另一方面,假设它们很小。在这种情况下,Pig会做一个很好的工作,收集他们在一起,分裂的问题消失了。这有一个缺点,那就是现在您要用namenode处理成吨的小文件。而且,由于文件很小,所以将文件转换为更合理的格式在计算上应该相对便宜。
那么你应该把这些文件重新格式化成什么格式呢?好问题!
仅仅将它们连接到一个大的块级压缩序列文件可能是最具挑战性的,但在性能方面是最有价值的。
另一种方法是完全忽略压缩,只将这些文件分解出来,或者至少将它们串联起来(在没有压缩的情况下,确实可以看到性能的提高)。
最后,您可以将文件blob成~100mb的块,然后gzip它们。
我认为在piggybank中编写某种tarball加载器是完全合理的,但我个人更愿意将数据以不同的方式进行布局。
5vf7fwbs2#
pigstorage将识别文件是否被压缩(扩展名为.gz,实际上是在pigtextinputformat扩展的textinputformat中实现的),但之后您将处理tar文件。如果您能够处理tar中文件之间的头行,那么您可以按原样使用pigstorage,否则您需要编写pigtextinputformat的扩展名来处理剥离每个文件之间的tar头行