Hive中新增自定義函式(UDF)方法及實踐
環境介紹:CentOS7+hive-1.1.0-cdh5.7.0+Maven3.3.9
1、下載原始碼
hive-1.1.0-cdh5.7.0-src.tar.gz
2、解壓原始碼
tar -zxvf hive-1.1.0-cdh5.7.0-src.tar.gz -C /home/hadoop/
cd /home/hadoop/hive-1.1.0-cdh5.7.0
3、將HelloUDF.java檔案增加到HIVE原始碼中
cp HelloUDF.java /home/hadoop/hive-1.1.0-cdh5.7.0/ql/src/java/org/apache/hadoop/hive/ql/udf/
4、修改FunctionRegistry.java 檔案
cd /home/hadoop/hive-1.1.0-cdh5.7.0/ql/src/java/org/apache/hadoop/hive/ql/exec/
vi FunctionRegistry.java
在import中增加:import org.apache.hadoop.hive.ql.udf.HelloUDF;
在檔案頭部 static 塊中新增:system.registerUDF("helloUDF", HelloUDF.class, false);
5、重新編譯
cd /home/hadoop/hive-1.1.0-cdh5.7.0
mvn clean package -DskipTests -Phadoop-2 -Pdist
6、編譯結果全部為:BUILD SUCCESS
檔案所在目錄:/home/hadoop/hive-1.1.0-cdh5.7.0/hive-1.1.0-cdh5.7.0/packaging/target
7、配置hive環境
配置hive環境時,可以全新配置或將編譯後帶UDF函式的包複製到舊hive環境中:
7.1、全部配置:參照之前文件。。。。。。。。。。。。。。
7.2、將編譯後帶UDF函式的包複製到舊hive環境
到/home/hadoop/hive-1.1.0-cdh5.7.0/packaging/target/apache-hive-1.1.0-cdh5.7.0-bin/apache-hive-1.1.0-cdh5.7.0-bin/lib下,找到hive-exec-1.1.0-cdh5.7.0.jar包,並將舊環境中對照的包替換掉
命令:
cd /home/hadoop/app/hive-1.1.0-cdh5.7.0/lib
mv hive-exec-1.1.0-cdh5.7.0.jar hive-exec-1.1.0-cdh5.7.0.jar_bak
cd /home/hadoop/hive-1.1.0-cdh5.7.0/packaging/target/apache-hive-1.1.0-cdh5.7.0-bin/apache-hive-1.1.0-cdh5.7.0-bin/lib
cp hive-exec-1.1.0-cdh5.7.0.jar /home/hadoop/app/hive-1.1.0-cdh5.7.0/lib
最終啟動hive
8、測試:
hive
hive (default)> show functions ; -- 能檢視到有 helloudf
若澤大資料交流群:671914634
1、下載原始碼
hive-1.1.0-cdh5.7.0-src.tar.gz
2、解壓原始碼
tar -zxvf hive-1.1.0-cdh5.7.0-src.tar.gz -C /home/hadoop/
cd /home/hadoop/hive-1.1.0-cdh5.7.0
3、將HelloUDF.java檔案增加到HIVE原始碼中
cp HelloUDF.java /home/hadoop/hive-1.1.0-cdh5.7.0/ql/src/java/org/apache/hadoop/hive/ql/udf/
4、修改FunctionRegistry.java 檔案
cd /home/hadoop/hive-1.1.0-cdh5.7.0/ql/src/java/org/apache/hadoop/hive/ql/exec/
vi FunctionRegistry.java
在import中增加:import org.apache.hadoop.hive.ql.udf.HelloUDF;
在檔案頭部 static 塊中新增:system.registerUDF("helloUDF", HelloUDF.class, false);
5、重新編譯
cd /home/hadoop/hive-1.1.0-cdh5.7.0
mvn clean package -DskipTests -Phadoop-2 -Pdist
6、編譯結果全部為:BUILD SUCCESS
檔案所在目錄:/home/hadoop/hive-1.1.0-cdh5.7.0/hive-1.1.0-cdh5.7.0/packaging/target
7、配置hive環境
配置hive環境時,可以全新配置或將編譯後帶UDF函式的包複製到舊hive環境中:
7.1、全部配置:參照之前文件。。。。。。。。。。。。。。
7.2、將編譯後帶UDF函式的包複製到舊hive環境
到/home/hadoop/hive-1.1.0-cdh5.7.0/packaging/target/apache-hive-1.1.0-cdh5.7.0-bin/apache-hive-1.1.0-cdh5.7.0-bin/lib下,找到hive-exec-1.1.0-cdh5.7.0.jar包,並將舊環境中對照的包替換掉
命令:
cd /home/hadoop/app/hive-1.1.0-cdh5.7.0/lib
mv hive-exec-1.1.0-cdh5.7.0.jar hive-exec-1.1.0-cdh5.7.0.jar_bak
cd /home/hadoop/hive-1.1.0-cdh5.7.0/packaging/target/apache-hive-1.1.0-cdh5.7.0-bin/apache-hive-1.1.0-cdh5.7.0-bin/lib
cp hive-exec-1.1.0-cdh5.7.0.jar /home/hadoop/app/hive-1.1.0-cdh5.7.0/lib
最終啟動hive
8、測試:
hive
hive (default)> show functions ; -- 能檢視到有 helloudf
若澤大資料交流群:671914634
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31511218/viewspace-2150100/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Apache Phoenix自定義函式(UDF)實踐Apache函式
- Hive函式(內建函式+自定義標準函式UDF)Hive函式
- Hive中配置與編寫自定義UDF函式Hive函式
- Hive常用函式及自定義函式Hive函式
- Hive中自定義函式Hive函式
- HIVE中的自定義函式Hive函式
- 開發hive UDF函式Hive函式
- hive 3.0.0自定義函式Hive函式
- 自定義UDF函式應用異常函式
- jQuery如何實現新增自定義函式jQuery函式
- hive編寫udf實踐記錄Hive
- HIVE自定義函式的擴充套件Hive函式套件
- Hive--->建立自定義的UDTF函式Hive函式
- Laravel 新增自定義助手函式Laravel函式
- 【Spark篇】---SparkSQL中自定義UDF和UDAF,開窗函式的應用SparkSQL函式
- Spark SQL使用簡介(2)--UDF(使用者自定義函式)SparkSQL函式
- Oracle中自定義函式Oracle函式
- PHP 自定義函式用法及常用函式集合PHP函式
- mysql 自定義分析函式 least 及 日期函式MySql函式AST
- Hive中的UDF詳解Hive
- oracle 10g 新增:自定義聚集函式Oracle 10g函式
- 動畫函式的繪製及自定義動畫函式動畫函式
- EMQX 多版本釋出、新增自定義函式功能MQ函式
- spark三種清理資料的方式:UDF,自定義函式,spark.sql;Python中的zip()與*zip()函式詳解//及python中的*args和**kwargsSpark函式SQLPython
- SQL Server 2005中的UDF(使用者定義函式)SQLServer函式
- 使用Hive中自定義UDAF函式實現統計區域產品使用者訪問排名Hive函式
- shell自定義函式函式
- Oracle 自定義函式Oracle函式
- perl自定義函式函式
- 自定義跳轉函式的通用unhook方法函式Hook
- [譯] 為函式自定義屬性的八種實現方法函式
- PHP開發之自定義函式及陣列PHP函式陣列
- Mysql資料庫自定義函式的定義、使用方法及操作注意事項MySql資料庫函式
- 在資料庫中自定義外部函式資料庫函式
- hive學習筆記之十:使用者自定義聚合函式(UDAF)Hive筆記函式
- MySQL建立自定義函式MySql函式
- python 自定義函式Python函式
- oracle 自定義聚合函式Oracle函式