3

豚のストリーミングの実行に問題があります。インタラクティブな豚のインスタンスを起動すると (参考までに、SSH/Putty を介してインタラクティブな豚の AWS EMR インスタンスのマスター ノードでこれを実行しています)、1 台のマシンのみで豚のストリーミングが完全に機能します (Windows Cloudera VM イメージでも機能します)。 )。ただし、複数のコンピューターを使用するように切り替えると、単に動作が停止し、さまざまなエラーが発生します。

ご了承ください:

  • 複数のコンピューターのインスタンスで問題なくストリーム コマンドを持たない Pig スクリプトを実行できます。
  • 私のすべての豚の作業は、-x ローカル モードではなく、豚の MapReduce モードで行われています。
  • 私のpythonスクリプト(stream1.py)はこれを一番上に持っています #!/usr/bin/env python

以下は、これまでに試したオプションの小さなサンプルです (以下のコマンドはすべて、ssh/putty 経由でアクセスしているマスター/メイン ノードの grunt シェルで実行されます)。

これは、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;
4

1 に答える 1

2
DEFINE X `stream1.py` SHIP('stream1.py');

あなたの前提条件と、現在のローカルディレクトリに stream1.py があることによると、私には有効に見えます。

これを確認する方法:

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

SHIPの目的は、すべてのタスクの作業ディレクトリにコマンドをコピーすることです。

于 2011-07-28T22:04:13.630 に答える