1

Python マッパーを使用して、DSE 3.0 クラスター (Hive 0.9) で Hive ストリーミングを実行しています。私の Python スクリプトは、Python 2.7 を必要とする statsmodels モジュールをインポートします。デフォルトは 2.7 ではないため (2.4 です)、statsmodels モジュールと同様にダウンロードしてインストールします。

ただし、単純な Hive クエリを実行すると、

hive> select transform (line) using 'python python-mapper.py' from docs;

ここで、「docs」は行 STRING を持つ Hive テーブルです。ただし、次のエラーが表示されます。

File "python-mapper.py", line 6, in ?
import statsmodels
ImportError: No module named statsmodels

そこで、Hive クエリを次のように変更しました。

hive> select transform (line) using 'python2.7 python-mapper.py' from docs;

バージョン 2.7 を呼び出します。しかし、その後、エラーが発生します

Caused by: java.io.IOException: Cannot run program "python2.7": 
           java.io.IOException: error=2, No such file or directory

python27 と /usr/local/bin/python2.7 も試しましたが、まだ同じエラーが発生しています。誰もこれに遭遇したことがありますか?On linux SUSE or RedHat, how do I load Python 2.7の投稿に対する 2 番目の回答を既に参照しています。どんなアドバイスでも大歓迎です!

ありがとう、AM

4

1 に答える 1

2

これは少し古いことは知っていますが、最近同じ問題に遭遇し、この問題に遭遇した他の人に答えようと思いました.

複数のバージョンの python がインストールされている場合、python2.7 コマンドは機能しません。

これを解決するには2つの方法があります。1 つは、Python 仮想環境を使用することです。これにより、スクリプトを開始し、これをリソースとして追加して、すべてのノードに配布できます。2 つ目は、次のように入力して、python2.7 ライブラリがインストールされている場所を見つけることができます。

which python2.7

次に、ハイブ クエリで場所を次のように参照します (例):

select transform (line) using '/usr/local/bin/python2.7 python-mapper.py' from docs;

ノードごとに python2.7 がインストールされている場所が異なる場合があるので、事前に確認してください。仮想環境を使用することをお勧めします。

于 2015-02-14T00:33:54.917 に答える