如何将tarball加载到pig

m2xkgtsf  于 2021-06-21  发布在  Pig
关注(0)|答案(2)|浏览(576)

我的hadoop集群中加载了tarball(access.logs.tar.gz)中的日志文件。我想知道的是他们的方式直接加载到Pig没有解开它?

d4so4syb

d4so4syb1#

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

5vf7fwbs

5vf7fwbs2#

pigstorage将识别文件是否被压缩(扩展名为.gz,实际上是在pigtextinputformat扩展的textinputformat中实现的),但之后您将处理tar文件。如果您能够处理tar中文件之间的头行,那么您可以按原样使用pigstorage,否则您需要编写pigtextinputformat的扩展名来处理剥离每个文件之间的tar头行

相关问题