使用 hadoop jar hive.jar ... 提交任務時,報 ClassNotFoundException: org.apache.hive.jdbc.HiveDriver,原因:hive.jar 為瘦 JAR,**未包含 Hive/Hadoop 依賴**,且 hadoop jar 不會自動把 HADOOP_CLASSPATH 加入應用 Classpath。
<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>
hadoop jar hive.jar com.aturbo.hadoop.Hive \
-libjars $(hadoop classpath | tr ':' ',')
HADOOP_CLASSPATH 後直接 java -cp ... 執行,不走 hadoop jar。解壓 Fat JAR 確認 org/apache/hive/jdbc/HiveDriver.class 存在,再提交即可通過。
**核心**:Hive JDBC 需大量傳遞依賴 (hive-jdbc, hive-exec, hadoop-common, guava 等),**務必打包或傳遞完整 Classpath**。