Hive學習之部署UDF的四種方法
在向Hive新增自定義的UDF或者新增Hive自帶的類,如GenericUDFDBOutput時,需要將包含UDF類的Jar包新增到Hive環境中,這樣就可以使用Create [temporary]function建立函數了,新增UDF Jar包有四種方法,下面分別進行介紹。
第一種是最常見但也不招人喜歡的方式是使用ADD JAR(s)語句,之所以說是不招人喜歡是,通過該方式新增的jar檔案只存在於當前會話中,當會話關閉後不能夠繼續使用該jar檔案,最常見的問題是建立了永久函式到metastore中,再次使用該函式時卻提示ClassNotFoundException。所以使用該方式每次都要使用ADD JAR(s)語句新增相關的jar檔案到Classpath中。
第二種是修改hive-site.xml檔案。修改引數hive.aux.jars.path的值指向UDF檔案所在的路徑。在hive-0.13中,該引數需要手動新增到hive-site.xml檔案中,在HiveConf類中,該引數的值為空。
第三種方法是在${HIVE_HOME}下建立auxlib目錄,將UDF檔案放到該目錄中,這樣hive在啟動時會將其中的jar檔案載入到classpath中。
第四種方法設定HIVE_AUX_JARS_PATH環境變數,變數的值為放置jar檔案的目錄,可以拷貝${HIVE_HOME}/conf中的hive-env.sh.template為hive-env.sh檔案,並修改最後一行的#export HIVE_AUX_JARS_PATH=為exportHIVE_AUX_JARS_PATH=jar檔案目錄來實現,或者在系統中直接新增HIVE_AUX_JARS_PATH環境變數。