私は2つのpythonファイル - my_python_A.pyとmy_python_B.pyを持っています。最初のファイルは2番目のファイルを参照します(from my_python_B import *
)。OozieでPythonスクリプトを実行しているときに、ローカルのPythonモジュールをインポートするにはどうすればよいですか?
私は(つまり、スクリプトは単にpython my_python_A.py
ある)Oozieシェルアクションから最初のpythonファイルを実行していて、次のエラー受け付けております:どちらのPythonのファイルが同じディレクトリの下に配置されている
Traceback (most recent call last):
File "my_python_A.py", line 2, in <module>
from my_python_B import *
ImportError: No module named my_python_B
Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.ShellMain], exit code [1]
をHDFSでこのインポートステートメントを機能させるにはどうすればよいですか?
通常、インタプリタはまず 'カレントディレクトリ'を探し、 'シェル'を探して、 'デフォルトのPATH'を探します。あなたはどの環境を使っていますか?そして、これらのファイルは同じプロジェクトの一部ですか?そうであれば、おそらくあなたは '__init__'ファイルを使うほうが良いかもしれません。 – jmugz3
@ jmugz3 - すべてのファイルは分散システム(すなわちHDFS)に保存されているので、クラスタで実行しているときにこれが適切かどうかはわかりません。 – John
Gotcha。私はOozieに慣れていませんが、インタプリタがあなたのモジュールを認識していないように聞こえるので、あなたの作業ディレクトリをあなたのシェルパスに追加しようとする可能性があります。 – jmugz3