6

numpy をインポートする python ファイルをスパーク送信していますが、no module named numpyエラーが発生しています。

$ spark-submit --py-files projects/other_requirements.egg projects/jobs/my_numpy_als.py
Traceback (most recent call last):
  File "/usr/local/www/my_numpy_als.py", line 13, in <module>
    from pyspark.mllib.recommendation import ALS
  File "/usr/lib/spark/python/pyspark/mllib/__init__.py", line 24, in <module>
    import numpy
ImportError: No module named numpy

numpy —python-files の卵を引き込もうと思っていましたが、その卵を作成する方法がわかりません。しかし、その後、pyspark 自体が numpy を使用していることに気付きました。自分のバージョンの numpy を取り込むのはばかげているでしょう。

ここで行うべき適切なことについて何か考えはありますか?

4

4 に答える 4

1

以下を含む小さなブートストラップスクリプトを構成することにより、すべてのemrノードにnumpyをインストールすることで、これを機能させました(とりわけ)。

#!/bin/bash -xe sudo yum install python-numpy python-scipy -y

次に、次のオプションを aws emr コマンドに追加して、クラスターの起動時に実行されるようにブートストラップ スクリプトを設定します (次の例では、ブートストラップ スクリプトに引数を指定します)。

--bootstrap-actions Path=s3://some-bucket/keylocation/bootstrap.sh,Name=setup_dependencies,Args=[s3://some-bucket]

これは、DataPipeline から自動的にクラスターをセットアップする場合にも使用できます。

于 2016-07-14T08:24:04.667 に答える
0

特定のライブラリをインポートすると、名前空間がnumpy関数で汚染されることがあります。min、 、maxなどの機能sumは、特にこの汚染を受けやすいです。疑わしい場合はいつでも、これらの関数の呼び出しを見つけて、これらの呼び出しを__builtin__.sumetc に置き換えます。そうする方が、汚染源を見つけるよりも速い場合があります。

于 2016-03-30T14:05:38.597 に答える
0

正しい Python リリースを指してspark-env.shいることを確認してください。PYSPARK_PATHファイルに追加export PYSPARK_PATH=/your_python_exe_path/conf/spark-env.shます。

于 2018-11-02T10:07:19.233 に答える