一、編譯準備

1.下載原始碼包

https://github.com/apache/hive/archive/refs/tags/rel/release-2.3.7.zip

或使用git直接拉取

無法解決科學問題請點

2.環境

JDK 1.8.0_202

Apache Maven 3.6.3

git 2.32.0 (編譯過程需要執行bash,cmd會報錯)

二、執行操作與主要問題

1.操作

在已經解壓過的Hive原始碼包下啟動git bash 執行一下程式碼

mvn clean package -Phadoop-2,dist 這是官網給出的編譯語句,根據基於的hadoop版本填入數字

mvn clean package -Phadoop-2 -DskipTests 跳過測試

mvn -Phadoop-2 -Pdist -DskipTests -Dmaven.javadoc.skip=true clean package 在上面的基礎上跳過文件生成

如果顯示Hadoop依賴問題報錯可以去掉hadoop項 mvn clean package -Pdist -DskipTests

2.主要問題

(1).pentaho-aggdesigner-algorithm:jar缺失



這個問題基本編譯Hive的都會遇到,根本原因是阿里雲映象jar包索引不明,按照其它方法提供的更改POM檔案中spring映象倉庫依然無法下載jar包,最終手動下載安裝成功

mvn install:install-file -DgroupId=org.pentaho -DartifactId=pentaho-aggdesigner-algorithm -Dversion=5.1.5-jhyde -Dpackaging=jar -Dfile=pentaho-aggdesigner-algorithm-5.1.5-jhyde.jar(jar絕對路徑)

(2).Java環境問題



經過幾次測試結合其他總結經驗發現,JDK驗證(java -version,javac,java)都正常的情況依然會有類似報錯

可以在執行編譯語句前設定JDK路徑(很多時候mvn預設是JRE)set JAVA_HOME=你的JDK絕對路徑

解決上述問題基本就編譯成功

在同等的環境下使用linux(ubuntu和CentOS)編譯均不會出現win下的各種環境問題

直接使用IDE編譯可能會出現更多JAR包問題,如果僅僅只是Hive的框架依賴如Hadoop_HOME和Druid_HOME,則不影響測試

如果不需要對整個Hive測試,可以僅編譯單個元件。例如:ql[hive-exec]、llap-common