Ich habe eine Hive UDF, die gut in Hive-Terminal funktioniert, was ich will, ich möchte es über Shell-Skript ausführen. Auf hive Terminal ich in der Lage bin folgende Befehle auszuführen:hive udf Ausführung über Shell-Skript
use mashery_db;
add jar hdfs://nameservice1/tmp/nextdata_aggregations/custom_jar/readerCheck.jar;
add file hdfs://nameservice1/tmp/GeoLite2-City.mmdb;
CREATE TEMPORARY FUNCTION geoip AS 'com.mashery.nextdata.hive.udf.GeoIPGenericUDF';
Aber wenn ich den obigen Code in Shell-Skript
hive -e "use mashery_db;"
hive -e "add jar hdfs://nameservice1/tmp/nextdata_aggregations/custom_jar/readerCheck.jar;"
hive -e "add file hdfs://nameservice1/tmp/GeoLite2-City.mmdb;"
hive -e "CREATE TEMPORARY FUNCTION geoip AS 'com.mashery.nextdata.hive.udf.GeoIPGenericUDF';"
Die erste ‚hive -e‘ funktioniert gut bin das Hinzufügen und fügt das Glas aber die letzte temporäre Funktion erstellen funktioniert nicht. Ich bin unten Störung zu erhalten:
FAILED: ParseException line 1:35 mismatched input 'com' expecting StringLiteral near 'AS' in create function statement
Ich habe auch mit einfachen Anführungszeichen versucht
hive -e "CREATE TEMPORARY FUNCTION geoip AS 'com.mashery.nextdata.hive.udf.GeoIPGenericUDF';"
dann erhalte ich FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask
FAILED: Class com.mashery.nextdata.hive.udf.GeoIPGenericUDF not found
Hat hive Udf Shell-Skript unterstützt, wenn es tut was falsch mache ich. Vielen Dank im Voraus
Versuchen Sie, das Glas zu importieren und die Funktion in einem Aufruf zu erstellen. d. h. 'hive -e" füge jar path_to_jar/foo.jar hinzu; erstelle temporäre Funktion foo als 'com.package.UDF'; " – gobrewers14
@ GoBrewers14 danke, dass es bei mir funktioniert hat :-) –