有時候須要改寫源碼,好比將經常使用的某個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
2)命令行添加-e
,能夠輸出錯誤棧信息ide
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=true
spa
注意事項:須要配置Maven環境變量,而且必定要寫%M2_HOME%
而非%MAVEN_HOME%
!命令行
編譯成功後,在項目根目錄下的packaging/target
下會生成tar包和一個同名文件夾,以下圖。同名文件夾是這個tar包解壓後的文件夾,上傳到Linux可直接使用,免解壓。