2015-04-07 79 views
2

我是Apache Pig和Python的新手。 当我尝试在Pig中注册Python函数时,它给出了与Jython相关的一些错误。我的Python脚本udf1.py将任何字符串转换为大写。在Apache Pig中使用Python UDF

from pig_util import outputSchema 

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

c=charlower('bbbb') 

print(c) 

当我尝试在咕噜壳猪本地模式进行注册,它抛出下面的错误

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相关的东西吗?我无法知道错误。

猪版本:Apache的版本猪0.11.0-cdh4.7.0使用PyCharm社区版4.0.4

Python版本

Python脚本创建:Python的2.6.6(r266:84292,2014年1月22日,09:42:36)

+0

在猪中导入pig_util.py不够。您需要为utils文件提供路径 – Mzf

+0

您还需要导入jython –

回答

3

我有同样的问题。这是我所做的。

我从here下载了pig_util.py文件。然后我将Pig_util.py文件放在保存python udf的相同目录中,然后执行。这为我解决了导入错误。

注:这与jython无关。