我有一个tarball(access.logs.tar.gz)中的日志文件加载到我的hadoop集群中.我想知道他们的方法是直接把它装到猪身上然后解开吗?
@ChrisWhite的答案在技术上是正确的,你应该接受他的答案而不是我的答案(至少IMO).
你需要摆脱tar.gzHadoop的文件.Gzip文件不可拆分,因此您会遇到如果您的gzip文件很大,您将在您的映射器中看到热点的情况.例如,如果您有一个.tar.gz100gb 的文件,则无法拆分计算.
另一方面,让我们说它们很小.在这种情况下,Pig会很好地将它们收集在一起,并且分裂问题就会消失.这有一个缺点,现在你正在使用NameNode处理大量的小文件.此外,由于文件很小,因此将文件重新编码为更合理的格式应该相对便宜.
那么你应该将文件重新格式化为什么格式?好问题!
我认为将某种tarball加载器写入piggybank是完全合理的,但我个人更愿意以不同的方式放置数据.
PigStorage 将识别该文件已压缩(通过 .gz 扩展名,这实际上是在 PigTextInputFormat 扩展的 TextInputFormat 中实现的),但之后您将处理一个 tar 文件。如果您能够处理 tar 中文件之间的标题行,那么您可以按原样使用 PigStorage,否则您需要编写自己的 PigTextInputFormat 扩展来处理剥离每个文件之间的 tar 标题行
| 归档时间: |
|
| 查看次数: |
1704 次 |
| 最近记录: |