首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

CentOS Hive JDBC 連線 ClassNotFoundException:fat-jar 缺少依賴,改用 hadoop classpath 傳遞完整類路徑

     編輯:程式設計綜合問答

使用 hadoop jar hive.jar ... 提交任務時,報 ClassNotFoundException: org.apache.hive.jdbc.HiveDriver,原因:hive.jar 為瘦 JAR,**未包含 Hive/Hadoop 依賴**,且 hadoop jar 不會自動把 HADOOP_CLASSPATH 加入應用 Classpath。

修正方案

  1. 打包為 **Fat JAR (Shade/Assembly Plugin)**,將所有依賴合併:
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-shade-plugin</artifactId>
  <version>3.4.1</version>
  <executions>
    <execution>
      <phase>package</phase>
      <goals><goal>shade</goal></goals>
    </execution>
  </executions>
</plugin>
  1. 或提交時指定完整類路徑:
hadoop jar hive.jar com.aturbo.hadoop.Hive \
  -libjars $(hadoop classpath | tr ':' ',')
  1. 更簡單:寫 Shell 腳本設定 HADOOP_CLASSPATH 後直接 java -cp ... 執行,不走 hadoop jar。

驗證

解壓 Fat JAR 確認 org/apache/hive/jdbc/HiveDriver.class 存在,再提交即可通過。

**核心**:Hive JDBC 需大量傳遞依賴 (hive-jdbc, hive-exec, hadoop-common, guava 等),**務必打包或傳遞完整 Classpath**。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved