2

私は Apache Pig と Python を初めて使用します。Pig で Python 関数を登録しようとすると、Jython に関連するエラーが発生します。私の python スクリプトudf1.pyは、文字列を大文字に変換します。

from pig_util import outputSchema

@outputSchema('output_field_name:chararray')
def charupper(x):
    b = x.upper()
    return b

c=charlower('bbbb')

print(c)

Grunt シェルで Pig ローカル モードに登録しようとすると、以下のエラーがスローされます。

grunt> REGISTER '/home/cloudera/PycharmProjects/Project1/udf1.py' USING jython as pyudf                      
2015-04-06 22:31:45,792 [main] WARN  org.apache.hadoop.conf.Configuration - fs.default.name is deprecated. Instead, use fs.defaultFS
2015-04-06 22:31:45,793 [main] WARN  org.apache.hadoop.conf.Configuration - io.bytes.per.checksum is deprecated. Instead, use dfs.bytes-per-checksum
2015-04-06 22:31:45,836 [main] WARN  org.apache.pig.scripting.jython.JythonScriptEngine - pig.cmd.args.remainders is empty. This is not expected unless on testing.
2015-04-06 22:31:45,842 [main] WARN  org.apache.pig.scripting.jython.JythonScriptEngine - module file does not exist: encodings, /usr/lib/pig/lib/jython-standalone-2.5.2.jar/Lib/encodings/__init__.py
2015-04-06 22:31:45,842 [main] WARN  org.apache.pig.scripting.jython.JythonScriptEngine - module file does not exist: encodings.utf_8, /usr/lib/pig/lib/jython-standalone-2.5.2.jar/Lib/encodings/utf_8.py
2015-04-06 22:31:45,842 [main] WARN  org.apache.pig.scripting.jython.JythonScriptEngine - module file does not exist: types, /usr/lib/pig/lib/jython-standalone-2.5.2.jar/Lib/types.py
2015-04-06 22:31:45,842 [main] WARN  org.apache.pig.scripting.jython.JythonScriptEngine - module file does not exist: encodings.aliases, /usr/lib/pig/lib/jython-standalone-2.5.2.jar/Lib/encodings/aliases.py
2015-04-06 22:31:45,842 [main] WARN  org.apache.pig.scripting.jython.JythonScriptEngine - module file does not exist: codecs, /usr/lib/pig/lib/jython-standalone-2.5.2.jar/Lib/codecs.py
2015-04-06 22:31:46,026 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1121: Python Error. Traceback (most recent call last):
  File "/home/cloudera/PycharmProjects/Project1/udf1.py", line 3, in <module>
    from pig_util import outputSchema
ImportError: No module named pig_util

Details at logfile: /home/cloudera/pig_1428381449281.log

すでに pig_util.py をインポートしました。CDH に jython に関連するものをインストールする必要がありますか?.エラーを知ることができませんでした。

Pig バージョン: Apache Pig バージョン 0.11.0-cdh4.7.0

PyCharm Community Edition 4.0.4 を使用して作成された Python スクリプト

Python バージョン: Python 2.6.6 (r266:84292、2014 年 1 月 22 日、09:42:36)

4

1 に答える 1

5

同じ問題がありました。これが私がやったことです。

ここpig_util.pyからファイルをダウンロードしました。次に、python udfが保存されたのと同じディレクトリにファイルを配置してから実行しました。これにより、インポートエラーが解決されました。Pig_util.py

注:これは jython とは関係ありません。

于 2016-07-26T07:39:45.870 に答える