2017-02-13 21 views
0

Я пытаюсь научиться использовать Python UDF с Hive.Использование Python UDF с улей

У меня есть очень простой питон UDF здесь:

import sys 
for line in sys.stdin: 
    line = line.strip() 
    print line 

Затем я добавляю файл в улье:

ADD FILE /home/hadoop/test2.py; 

Теперь я называю Улья запрос:

SELECT TRANSFORM (admission_type_id, description) 
USING 'python test2.py' 
FROM admission_type; 

Этот работает, как и ожидалось, никаких изменений в поле не производится, а выход печатается как есть.

Теперь, когда я изменяю UDF, вводя функцию split, я получаю ошибку выполнения. Как мне отлаживать здесь? и что я делаю неправильно?

Новая UDF:

import sys 
for line in sys.stdin: 
    line = line.strip() 
    fields = line.split('\t') # when this line is introduced, I get an execution error 
    print line 
+1

Вуду. Иногда он терпит неудачу и иногда работает. –

ответ

-1

Проверить это link .. Надеюсь, что это поможет ..

+1

Это должно быть добавлено как комментарий, а не ответ. –

0
import sys 

for line in sys.stdin: 
    line = line.strip() 
    field1, field2 = line.split('\t') 
    print '\t'.join([str(field1), str(field2)]) 


SELECT TRANSFORM (admission_type_id, description)  
USING 'python test2.py' As (admission_type_id_new, description_new)  
FROM admission_type;