Hadoop pig latin 无法通过 python 脚本流式传输

Posted

技术标签:

【中文标题】Hadoop pig latin 无法通过 python 脚本流式传输【英文标题】:Hadoop pig latin unable to stream through a python script 【发布时间】:2011-04-13 13:53:26 【问题描述】:

我有一个简单的 python 脚本 (moo.py),我正在尝试流式传输

import sys, os
for line in sys.stdin:
    print 1;

我尝试运行这个猪脚本

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 -x local)运行这个猪脚本时,一切都很好, 但是当我在没有 -x local 的情况下运行它时,它会打印出这个错误

[main] 错误 org.apache.pig.tools.grunt.Grunt - 错误 2017:创建作业配置的内部错误。

[日志文件]

原因:java.io.FileNotFoundException:文件moo.py不存在。

有什么想法吗?

【问题讨论】:

【参考方案1】:

这很可能是相对路径的问题。

试试:

DEFINE CMD `python moo.py` ship('/local/path/to/moo.py');

这也可能是读/写/执行权限的问题。

【讨论】:

【参考方案2】:

问题是我使用了ship() 函数而不是cache()ship() 工作文件 - 将本地文件从主机传递给从机 从机使用cache() 从可访问的地方获取文件 比如亚马逊上的s3

希望对任何人都有帮助:]

【讨论】:

以上是关于Hadoop pig latin 无法通过 python 脚本流式传输的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL 能否可靠地转换为 Pig Latin 或带有 Pig Latin 和 Hive 的 Oozie 管道

向 udf pig latin 发送矩阵

Pig Latin 中的用户定义函数

Pig UDF 或 Pig Latin 还是两者兼而有之?

Pig Latin 中的 AVG() 函数问题

在 Pig Latin 中使用 FOREACH 阅读汽车时遇到问题