Hadoop Pig Latin无法通过Python脚本流式处理
我有一个简单的 Python 脚本(moo.py),我想通过它进行数据流处理。
import sys, os
for line in sys.stdin:
print 1;
然后我尝试运行这个 Pig 脚本。
DEFINE CMD `python moo.py` ship('moo.py');
data = LOAD 's3://path/to/my/data/*' AS (a:chararray, b:chararray, c:int, d:int);
res = STREAM data through CMD;
dump res;
当我在本地运行这个 Pig 脚本(使用命令 pig -x local)时,一切都很正常,但当我不加 -x local 运行时,就出现了这个错误。
[main] 错误 org.apache.pig.tools.grunt.Grunt - 错误 2017:创建作业配置时发生内部错误。
[日志文件]
原因是:java.io.FileNotFoundException:文件 moo.py 不存在。
有什么想法吗?
2 个回答
5
这很可能是相对路径的问题。
你可以试试:
DEFINE CMD `python moo.py` ship('/local/path/to/moo.py');
这也可能是读/写/执行权限的问题。
0
问题在于我用了 ship()
这个函数,而不是 cache()
。虽然 ship()
可以正常工作——它是把主服务器上的本地文件传给从服务器。cache()
则是从服务器用来从一个可以访问的地方获取文件,比如亚马逊的 S3 存储。
希望这对大家有帮助 :]