Hive將UDF編譯到源碼中(idea)

有時候須要改寫源碼,好比將經常使用的某個UDF放在源碼中,啓動便可使用。在Linux上直接改寫源碼是很容易出錯的,由於vim沒有檢測提示,直到打包時過了好久才報錯,並找到日誌才發現是哪裏寫錯了,並且提示的也不清楚。因此推薦使用idea來完成改源碼的操做,好處不言而喻。java

1.下載解壓hive源碼,用idea打開爲Maven項目(jdk1.8),這時全部的依賴就會自動下載git

2.將寫好的UDF的java代碼放在org.apache.hadoop.hive.ql.udf包下apache

3.在org.apache.hadoop.hive.ql.exec.FunctionRegistry類中靜態代碼塊添加註冊vim

4.Maven打包bash

1)點掉tests,至關於-DskipTests=true
clipboard.png
2)命令行添加-e,能夠輸出錯誤棧信息ide

clipboard.png
3)Profiles填寫hadoop-2 dist,至關於-Phadoop-2,dist(如上圖)oop


運行報錯:idea

Caused by: java.io.IOException: Cannot run program "bash" (in directory "F:\IdeaProjects\hive-1.1.0-cdh5.7.0\common"): CreateProcess error=2, 系統找不到指定的文件。

這是由於在Windows環境不能執行bash。那麼須要能執行bash環境,有一個神器:Git
安裝git後,打開Git Bash,便可在Windows系統中執行Linux命令了!
cd到hive源碼項目根目錄,執行mvn -e clean package -Phadoop-2,dist -DskipTests=truespa

clipboard.png

注意事項:須要配置Maven環境變量,而且必定要寫%M2_HOME%而非%MAVEN_HOME%命令行


編譯成功後,在項目根目錄下的packaging/target下會生成tar包和一個同名文件夾,以下圖。同名文件夾是這個tar包解壓後的文件夾,上傳到Linux可直接使用,免解壓。

clipboard.png

相關文章
相關標籤/搜索