ハイブターミナルでうまく動作するハイブUdfがあります。シェルスクリプトで実行したいものです。ハイブ端末に 私は、次のコマンドを実行することができる午前:シェルスクリプトによるハイブudfの実行
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';
しかし、私はシェルスクリプトで上記のコードを追加してい
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';"
第一「ハイブ-e」はうまく機能してjarファイルを追加しますしかし、最後の1つは、一時的な機能を作成しない動作します。私は、エラーの下に取得しています:
FAILED: ParseException line 1:35 mismatched input 'com' expecting StringLiteral near 'AS' in create function statement
私も単一引用符で
hive -e "CREATE TEMPORARY FUNCTION geoip AS 'com.mashery.nextdata.hive.udf.GeoIPGenericUDF';"
を試してみました、私はFAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.FunctionTask
FAILED: Class com.mashery.nextdata.hive.udf.GeoIPGenericUDF not found
を取得しています、それはいただきました!ない場合ハイブUDFは、シェルスクリプトをサポートしています間違っている。
jarをインポートして、ハイブへの1回の呼び出しですべての関数を作成してみてください。つまり、 'hive -e 'はjar path_to_jar/foo.jarを追加し、' com.package.UDF'として一時関数fooを作成します; " – gobrewers14
@ GoBrewers14は私のために働いてくれて感謝します:-) –