2017-06-28 3 views
0

私はかなりの依存関係を持つpysparkジョブを持っています。そこで私はpip install -t reqs -r requirements.txtを実行し、次にreqsディレクトリを圧縮しました。私はそれを--py-filesに渡して、すべてのノードで利用できるようにしました。py-filesからのpyspark再帰的インポートzip

zipファイルに正常に見つかったパンダをインポートするファイルがあります。しかし、それはそのzipファイルにもであっても見つからない、パンダの輸入のnumpyの:pandasreqs.zipに発見されたが、numpyのではないこと

File "./spark-job.zip/model/transforms/parser.py", line 3, in <module> 
    import pandas as pd 
File "./reqs.zip/pandas/__init__.py", line 19, in <module> 
    "Missing required dependencies {0}".format(missing_dependencies)) 
ImportError: Missing required dependencies ['numpy'] 

注意。 numpyはzipファイルにあることに注意してください。私はそれがそこにあると確信しています:

$ unzip -l reqs.zip | grep pandas | head -10 
     0 2017-06-28 20:58 pandas-0.20.2.dist-info/ 
    97277 2017-06-28 20:58 pandas-0.20.2.dist-info/RECORD 
     109 2017-06-28 20:58 pandas-0.20.2.dist-info/WHEEL 
     7 2017-06-28 20:58 pandas-0.20.2.dist-info/top_level.txt 
    1102 2017-06-28 20:58 pandas-0.20.2.dist-info/metadata.json 
     4 2017-06-28 20:58 pandas-0.20.2.dist-info/INSTALLER 
    3471 2017-06-28 20:58 pandas-0.20.2.dist-info/DESCRIPTION.rst 
    4452 2017-06-28 20:58 pandas-0.20.2.dist-info/METADATA 
     0 2017-06-28 20:58 pandas/ 
     0 2017-06-28 20:58 pandas/formats/ 

$ unzip -l reqs.zip | grep numpy | head -40 
     0 2017-06-28 20:58 numpy-1.13.0.dist-info/ 
    52437 2017-06-28 20:58 numpy-1.13.0.dist-info/RECORD 
     109 2017-06-28 20:58 numpy-1.13.0.dist-info/WHEEL 
     6 2017-06-28 20:58 numpy-1.13.0.dist-info/top_level.txt 
    1330 2017-06-28 20:58 numpy-1.13.0.dist-info/metadata.json 
     4 2017-06-28 20:58 numpy-1.13.0.dist-info/INSTALLER 
     884 2017-06-28 20:58 numpy-1.13.0.dist-info/DESCRIPTION.rst 
    2217 2017-06-28 20:58 numpy-1.13.0.dist-info/METADATA 
    22668 2017-06-28 20:58 sklearn/externals/joblib/numpy_pickle_utils.py 
    8440 2017-06-28 20:58 sklearn/externals/joblib/numpy_pickle_compat.py 
    23222 2017-06-28 20:58 sklearn/externals/joblib/numpy_pickle.py 
    7468 2017-06-28 20:58 sklearn/externals/joblib/__pycache__/numpy_pickle_compat.cpython-34.pyc 
    16545 2017-06-28 20:58 sklearn/externals/joblib/__pycache__/numpy_pickle_utils.cpython-34.pyc 
    15643 2017-06-28 20:58 sklearn/externals/joblib/__pycache__/numpy_pickle.cpython-34.pyc 
    10508 2017-06-28 20:58 scipy/_lib/__pycache__/_numpy_compat.cpython-34.pyc 
    11513 2017-06-28 20:58 scipy/_lib/_numpy_compat.py 
     0 2017-06-28 20:58 pandas/compat/numpy/ 
    12344 2017-06-28 20:58 pandas/compat/numpy/function.py 
     0 2017-06-28 20:58 pandas/compat/numpy/__pycache__/ 
    2399 2017-06-28 20:58 pandas/compat/numpy/__pycache__/__init__.cpython-34.pyc 
    10150 2017-06-28 20:58 pandas/compat/numpy/__pycache__/function.cpython-34.pyc 
    2213 2017-06-28 20:58 pandas/compat/numpy/__init__.py 
     0 2017-06-28 20:58 numpy/ 
     0 2017-06-28 20:58 numpy/.libs/ 
38513408 2017-06-28 20:58 numpy/.libs/libopenblasp-r0-39a31c03.2.18.so 
    1023960 2017-06-28 20:58 numpy/.libs/libgfortran-ed201abd.so.3.0.0 
     0 2017-06-28 20:58 numpy/testing/ 
    2705 2017-06-28 20:58 numpy/testing/print_coercion_tables.py 
    8036 2017-06-28 20:58 numpy/testing/decorators.py 
    75541 2017-06-28 20:58 numpy/testing/utils.py 
    19120 2017-06-28 20:58 numpy/testing/nosetester.py 
    13834 2017-06-28 20:58 numpy/testing/noseclasses.py 
     0 2017-06-28 20:58 numpy/testing/__pycache__/ 
     713 2017-06-28 20:58 numpy/testing/__pycache__/__init__.cpython-34.pyc 
    9827 2017-06-28 20:58 numpy/testing/__pycache__/noseclasses.cpython-34.pyc 
    8572 2017-06-28 20:58 numpy/testing/__pycache__/decorators.cpython-34.pyc 
    67010 2017-06-28 20:58 numpy/testing/__pycache__/utils.cpython-34.pyc 
    2712 2017-06-28 20:58 numpy/testing/__pycache__/print_coercion_tables.cpython-34.pyc 
    15253 2017-06-28 20:58 numpy/testing/__pycache__/nosetester.cpython-34.pyc 
     805 2017-06-28 20:58 numpy/testing/__pycache__/setup.cpython-34.pyc 

なぜこれが正しく動作しないのでしょうか?

答えて

0

私は自分の質問に答えているかもしれません。 https://issues.apache.org/jira/browse/SPARK-6764に記載されているように、--py-fileszipimportからインポートするためにzipimportを使用すると、.py、.pyc、および.pyoファイルのみがサポートされます。特に、numpyのようなネイティブコードを必要とするモジュールはサポートしていません。

関連する問題