Pig Hadoop Stream 帮助

Posted

技术标签:

【中文标题】Pig Hadoop Stream 帮助【英文标题】:Pig Hadoop Stream help 【发布时间】:2011-07-27 23:01:39 【问题描述】:

我在运行猪流式传输时遇到问题。当我启动一个交互式猪实例(仅供参考,我通过 SSH/Putty 在交互式猪 AWS EMR 实例的主节点上执行此操作)时,只有一台机器我的猪流工作完美(它也适用于我的 windows cloudera VM 映像)。但是,当我切换到使用多台计算机时,它会停止工作并给出各种错误。

注意:

我能够在多计算机实例上运行没有任何流命令的 Pig 脚本,没有问题。 我所有的 pig 工作都是在 pig MapReduce 模式下完成的,而不是 –x 本地模式。 我的 python 脚本 (stream1.py) 在顶部有这个 #!/usr/bin/env python

以下是我迄今为止尝试过的选项的小样本(以下所有命令都是在主/主节点上的 grunt shell 中完成的,我通过 ssh/putty 访问它):

这就是我如何将 python 文件放到母节点上以便可以使用它:

cp s3n://darin.emr-logs/stream1.py stream1.py
copyToLocal stream1.py /home/hadoop/stream1.py
chmod 755 stream1.py

这些是我的各种直播尝试:

cooc = stream ct_pag_ph through `stream1.py`
dump coco;
ERROR 2090: Received Error while processing the reduce plan: 'stream1.py ' failed with exit status: 127

cooc = stream ct_pag_ph through `python stream1.py`;
dump coco;
ERROR 2090: Received Error while processing the reduce plan: 'python stream1.py ' failed with exit status: 2

DEFINE X `stream1.py`; 
cooc = stream ct_bag_ph through X;
dump coco;
ERROR 2090: Received Error while processing the reduce plan: 'stream1.py ' failed with exit status: 127

DEFINE X `stream1.py`; 
cooc = stream ct_bag_ph through `python X`;
dump coco;
ERROR 2090: Received Error while processing the reduce plan: 'python X ' failed with exit status: 2

DEFINE X `stream1.py` SHIP('stream1.py');
cooc = STREAM ct_bag_ph THROUGH X;
dump cooc;
ERROR 2017: Internal error creating job configuration.

DEFINE X `stream1.py` SHIP('/stream1.p');
cooc = STREAM ct_bag_ph THROUGH X;
dump cooc;

DEFINE X `stream1.py` SHIP('stream1.py') CACHE('stream1.py');
cooc = STREAM ct_bag_ph THROUGH X;
ERROR 2017: Internal error creating job configuration.

define X 'python /home/hadoop/stream1.py' SHIP('/home/hadoop/stream1.py');
cooc = STREAM ct_bag_ph THROUGH X;

【问题讨论】:

【参考方案1】:
DEFINE X `stream1.py` SHIP('stream1.py');

根据您的先决条件并在您当前的本地目录中有stream1.py,对我来说似乎有效。

确定这一点的方法:

DEFINE X `python stream1.py` SHIP('/local/path/stream1.py');

SHIP的目标是将命令复制到所有任务的工作目录中。

【讨论】:

感谢您对此的确认。也许这些对我有用,但问题在于 python 本身的执行(没有找到它)。因为我很确定 python 代码不会抛出任何错误并且不使用任何额外的库,所以它可能与文件的第一行有关:#!/usr/bin/env python - 猜我不t 完全理解这个陈述。 好的,所以我使用 #!/usr/bin/env python 和 #!/usr/bin/python 以及以下 DEFINE 语句进行了测试:define X stream_t.py SHIP('stream_t.py ');定义 X python stream_t.py SHIP('stream_t.py');定义 X stream_t.py SHIP('/home/hadoop/stream_t.py');定义 X stream_t.py SHIP('stream_t.py') CACHE('stream_t.py');但是我仍然没有工作,因为我不断收到错误 2017:创建作业配置的内部错误。 在 AWS EMR 人员的帮助下,这个问题已经解决,下面的命令可以解决问题:define X `stream_t.py` SHIP('/home/hadoop/stream_t.py'); 酷,所以它需要正确的本地路径。关于“shebang”你可以看看***.com/questions/2429511/…

以上是关于Pig Hadoop Stream 帮助的主要内容,如果未能解决你的问题,请参考以下文章

hadoo简介

无法在 PIG 中转储关系

如何查看Hadoop上安装的pig版本

pig@hadoop:使用多核处理没有 hdfs 的本地文件

[db] hadoop && pig

大数据Hadoop生态圈:Pig和Hive