使用しているピグラチン スクリプトの UDF の作成に問題があります。私の問題は、スクリプトを実行するとpig script.pig
、次のエラーが発生することです。
[main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1121: Python Error. Traceback (most recent call last):
File "utils.py", line 3, in <module>
import re
ImportError: No module named re
そして、「utils.py」スクリプトでは、次のようにモジュールをインポートしています。import re
モジュールが見つからないのはなぜre
ですか?どうすれば修正できますか?
編集コマンド
を使用してPythonスクリプトを直接実行すると、モジュールpython
が見つからないというエラーは表示されないことに 注意してください。re
編集 2
わかりました、コメントに基づいて、jython (システムにはインストールされていません) をインストールしましたprint sys.path
。スクリプトの出力は次のとおりです。
パイソンの使用
['/home/hduser/bqmScripts/betsScripts', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/python2.6/dist-packages/gst-0.10', '/usr/lib/pymodules/python2.6', '/usr/lib/python2.6/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.6/gtk-2.0', '/usr/local/lib/python2.6/dist-packages']
Jython の使用
['', '/usr/share/jython/Lib', '/usr/lib/site-python', '__classpath__']
豚を使う
['/pig/lib/Lib', '__classpath__', '__pyclasspath__/']
これを見た後、欠落しているパス要素を jython から pig バージョンに追加しようとしましたが、今得られるのは次のとおりです。
File "utils.py", line 8, in <module>
import re
File "/usr/share/jython/Lib/re.py", line 7, in <module>
import sre, sys
File "/usr/share/jython/Lib/sre.py", line 97, in <module>
import sre_compile
File "/usr/share/jython/Lib/sre_compile.py", line 17, in <module>
assert _sre.MAGIC == MAGIC, "SRE module mismatch"
AssertionError: SRE module mismatch
解決した
私の最新のエラーメッセージを解決するために、私の豚のインストールが使用していたjthonのバージョン(2.5)を探し、それを手動でインストールしました。これで問題は解決しました。