2015-04-07 4 views
2

Я новичок в Apache Pig и Python. Когда я пытаюсь выполнить функцию РЕГИСТРАЦИЯ Python в Pig, он дает некоторую ошибку, связанную с Jython. Мой скрипт python udf1.py преобразует любую строку в верхний регистр.Использование Python UDF в Apache Pig

from pig_util import outputSchema 

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

c=charlower('bbbb') 

print(c) 

При попытке зарегистрироваться в локальном режиме Свиньи в Grunt оболочке, он бросает ошибку ниже

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. Должен ли я установить какую-либо вещь, связанную с jython в моем CDH?. Я не смог узнать об ошибке.

Pig версия: Apache Pig версии 0.11.0-cdh4.7.0

Python скрипт создан с использованием PyCharm Community Edition 4.0.4

версия Python: Python 2.6.6 (r266: 84292, 22 января 2014 , 09:42:36)

+0

Импортировать pig_util.py в свиньи недостаточно. вам нужно указать путь для файла utils – Mzf

+0

, вам также нужно импортировать jython –

ответ

3

У меня была та же проблема. Вот что я сделал.

Я загрузил файл pig_util.py с here. Затем я поместил файл Pig_util.py в тот же каталог, где мой python udf был сохранен, а затем выполнен. Это решило ошибку импорта для меня.

Примечание: Это не имеет никакого отношения к jython.

Смежные вопросы