正如我之前提到的,Pig 不能很好地处理空(0 字节)文件。不幸的是,有很多方法可以创建这些文件(甚至在 Hadoop 实用程序中)。
我认为我可以通过使用Hadoop 的 glob 语法在LOAD 语句中显式加载与给定命名约定匹配的文件来解决这个问题。不幸的是,这似乎不起作用,因为即使我使用 glob 过滤到已知良好的输入文件,我仍然遇到前面提到的 0 字节故障。
这是一个示例:假设我在 S3 中有以下文件:
- mybucket/a/b/ (0 字节)
- mybucket/a/b/myfile.log (>0 字节)
- mybucket/a/b/yourfile.log (>0 字节)
如果我在我的猪脚本中使用这样的 LOAD 语句:
myData = load 's3://mybucket/a/b/*.log as ( ... )
我希望 Pig 不会阻塞 0 字节文件,但它仍然会阻塞。让 Pig 实际上只查看与预期 glob 模式匹配的文件是否有技巧?