Hadoop Pig Latin无法通过Python脚本流式处理

3 投票
2 回答
1115 浏览
提问于 2025-04-16 15:39

我有一个简单的 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 存储。

希望这对大家有帮助 :]

撰写回答