2017-02-13 21 views
0

Ich versuche, mit Python UDF mit Hive zu lernen.Verwenden von Python UDF mit Hive

Ich habe eine sehr grundlegende Python UDF hier:

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

Dann füge ich die Datei in Hive:

ADD FILE /home/hadoop/test2.py; 

Jetzt nenne ich die Hive Abfrage:

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

Diese funktioniert wie erwartet, es werden keine Änderungen am Feld vorgenommen und die Ausgabe wird unverändert ausgegeben.

Jetzt, wenn ich die UDF durch Einführung der Split-Funktion ändern, erhalte ich einen Ausführungsfehler. Wie kann ich hier debuggen? und was mache ich falsch?

New 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

Voodoo. Manchmal schlägt es fehl und manchmal funktioniert es. –

Antwort

-1

prüfen diese link .. Hoffe, dass dies helfen wird ..

+1

Dies sollte als Kommentar hinzugefügt und nicht beantwortet werden. –

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; 
Verwandte Themen