2016-06-21 20 views
1

私はEMRクラスタを作成し、単純なwordcount.pyスパークプログラムを実行するawsデータパイプラインタスクを作成しようとしています。スレッド「メイン」にjava.io.IOExceptionでEMRにpython spark stepを追加するには?

例外::私は、タスクをアクティブにしたとき、私はのようなエラーを取得し、

"myEmrStep": "s3://test/wordcount.py,s3://test/data/abc.txt,s3://test/output/outfile5/", 

:私は通りの手順は簡単ですdatapipelineの定義を使用しましたジョブジャーを開くエラー: /mnt/var/lib/hadoop/steps/s-187JR8H3XT8N7/wordcount.py( )org.apache.hadoop.util.RunJar.run(RunJar.java:160)at org.apache。 hadoop.util.RunJar.main(RunJar.java:136)原因: java.util.zip.ZipException:zipファイルを開く際にエラーが発生しました。 java.util.zip.ZipFile.open(Nativ

で のjava.util.zip.ZipFile。(ZipFile.java:215)でのE法)のステップのように思えるのJavaの代わりのpythonを使用してプログラムを実行しようとしています。 何か考えてください。

ありがとうございました。

答えて

1

sparkコマンドを実行することをクラスタに指示する必要があります。あなたはgithubの上(スパークパイプラインを含む)のサンプルを見つけることができます。 https://github.com/awslabs/data-pipeline-samples

EMRクラスタは、あなたのコマンドを開始するには「火花提出」形式をサポートして、詳細についてはこれをチェックしてください: http://spark.apache.org/docs/latest/submitting-applications.html

ベスト。

0

私のパイプラインの定義では、基本的にいくつかのjarを使用して、ボックスでランダムなコマンドを実行できるようにしています...次に、spark-submitコマンドでsparkジョブを送信しますローカル)。

これは、内のアクティビティノード上で

(私は、現在のディレクトリされているフォルダを知らない)それ以外の場合は動作しない場合があります、あなたはコマンドで使用するすべてのパスが絶対的であることを確認してくださいパイプライン: "step" : "/var/lib/aws/emr/step-runner/hadoop-jars/command-runner.jar,spark-submit,--py-files,/home/hadoop/lib.zip,/home/hadoop/analyse_exposures.py,#{myOutputS3Loc}/output/,#{myExposuresAnalysisWindowSize}"

また、クラスター内の個々のコンピューターにすべてのコードを転送するようにクラスターをブートストラップするスクリプトがあります。

これは、EMR-リソースで定義されています"bootstrapAction": "#{myDeliverablesBucket}/emr/bootstrap.sh,#{myDeliverablesBucket}/emr/"

私はクラスタは直接S3からそれらを読み込むのではなく、起動すると、すべてのリソースをコピーするのが最も柔軟ではないかもしれないことを知っているが、それは仕事をしていません。

関連する問題