In dem folgenden Code, Jedes Mal, wenn Ausnahme abgefangen wird, würde Ich mag aus dem Programm beenden & die Ausnahme auf Shell druckenHive UDF mit Python - Print Ausnahme auf Shell
#stream.py
import hashlib
import sys
import os
import importlib
for line in sys.stdin.readlines():
try:
inpFile = "temp.py"
execfile(inpFile)
line1 = line.strip('\n').split('\t')
print "\t".join(line1)
except:
#exception expected "temp.py:File Not Found", how do I exit the code & print the exception on console ?
sys.exit(1)
Hier ist die Abfrage-Transformation aufrufen die UDF:
erstellen Tabelle newtable als Select VERÄNDERN (id, name) 'python stream.py' als (id, name) von mytable weiter verwenden;
Ideen geschätzt.
Ja, aber "Druck" würde einen Link druckt in der Tabelle würde zuzugreifen. Überprüfen Sie Bearbeiten in der Frage –
Kein Glück, das obige Skript wirft Laufzeitausnahme "org.apache.hadoop.hive.ql.metadata.HiveException: [Fehler 20003]: Ein Fehler trat auf, wenn Sie versuchen, den Operator zu schließen, der Ihr benutzerdefiniertes Skript ausführt" . –
Klingt so, als ob Sie 'sys.exit (1)' nicht in hadoop verwenden dürfen. Vielleicht wird diese Ausnahme ausgelöst, wenn Sie mit einem Fehler beenden - aber ich schätze. Ich habe keine Erfahrung mit Hadoop. Vielleicht solltest du auf die Konsole schreiben oder tty (abhängig vom Betriebssystem), die dein Shell-Programm benutzt. Ich nehme an, dass Sie das mit "Print extend on Shell" meinen. – cdarke