2016-10-11 8 views
0

py-filesオプションを使用して​​を使用していますが、私が作成した卵(spark_submit_test_lib-0.1-py2.7.egg)を含めることができます。その.eggの 構造は、基本的には次のとおりです。spark-submitの--py-filesオプションで提供された.eggファイルをどのように参照するのですか?

spark-submit --queue 'myqueue' --py-files spark_submit_test_lib-0.1-py2.7.egg --deploy-mode cluster --master yarn spark_submit_test.py 

は、それが失敗した:私は使用して私のHadoopクラスタに提出

from spark_submit_test_lib import do_sum 

私のドライバースクリプト spark_submit_test.py
root 
|- EGG-INFO 
|- spark_submit_test_lib 
    |- __init__.pyc 
    |- __init__.py 
    |- spark_submit_test_lib.pyc 
    |- spark_submit_test_lib.py 
     |- def do_sum() 

私はこのインポートを持っていますエラー:

ImportError: No module named spark_submit_test_lib 

私はまだ同じエラーを取得し、

from spark_submit_test_lib.spark_submit_test_lib import do_sum 

になく、無駄にimport文を変更してみました。

誰かが似たような問題を抱えているのを見ました(この場合、ドライバとして.egg内のファイルを使用するためにspark-submitを望みます - 同様の問題ですが、同じではありません):What filepath or dot notation should I use when using spark-submit.py with .egg files as an argument to --py-files執筆には答えがありません。

答えて

-1

これは、--py-files引数が、ドライバプログラムではなく、sparkクラスタ上のノードによって使用されるファイルを提供するためだと思います。あなたのドライバーのpythonプログラムはローカルである必要があります。私はこれについて間違っている可能性がありますが、これは私が経験したことであり、あなたが結びついた質問への私の最終的な結論です。

+0

OK素晴らしい、THX。私は実際にそれを動作させることができたし、上記のように 'spark_submit_test_lib.spark_submit_test_lib import do_sum'を使って行った。私はこのスレッドを投稿する前に試したときに何か間違ったことをしていたに違いない。とにかく、私は今それが働いていると言ってうれしい。 – jamiet

0

私にとっては、このコマンドの機能ここと応答の上に来るための

spark2-submit --master yarn \ 
      --driver-memory 20g \ 
      --num-executors 50 \ 
      --executor-cores 1 \ 
      --deploy-mode client \ 
      --jars spark-avro_2.11-3.2.0.jar \ 
      --py-files spark_submit_test_lib-0.1-py2.7.egg \ 
      driver.py 
関連する問題