【发布时间】:2011-04-28 20:33:15
【问题描述】:
我在 Amazon 的 Elastic Map-Reduce 上使用 Pig 进行批量分析。我的输入文件位于 S3 上,并且包含由每行一个 JSON 字典表示的事件。我使用大象鸟 JsonLoader 库来解析输入文件。到目前为止一切顺利。
我在处理存储在本地文件系统或交互式 Pig 会话中的 hdfs 上的大文件时遇到了问题。看起来如果输入文件足够大以进行拆分,大象鸟只处理过一个拆分,并且在拆分结束时处理停止并且没有错误消息。如果我从 S3 流式传输输入(在 S3 输入上没有文件拆分),或者如果我将文件转换为 Pig 直接可读的格式,我不会遇到同样的问题。
举个具体的例子:一个有 833,138 行的文件最多只能处理 379,751 行(如果我在 Pig 中观察完成百分比,它会平稳地上升到 50%,然后跳到 100%)。我还尝试了一个包含 400,000 行的文件,并且处理得很好。
所以我的问题是:为什么大象鸟只处理一个拆分?我是误解了 Pig 在交互模式下应该如何工作还是发生了什么大错特错?
【问题讨论】:
-
我的商务同事听到 eng 团队讨论这个 bug 后很快就明白了 :)
-
我讨厌猪本地模式。它与我不使用的 hadoop 模式不一致且完全不同。这使得调试猪成为一个 PITA。
-
@Spike:你的意思是 pig -x local?我用 -x local 和 not 都遇到了这个问题。
标签: hadoop apache-pig amazon-emr