簡體   English   中英

在Hive驅動程序連接線上的Hadoop中由ClassNotFoundException引起的NoClassDefFoundError?

[英]NoClassDefFoundError caused by ClassNotFoundException in Hadoop on Hive Driver Connection line?

通常我從谷歌搜索開始尋找解決方案,但此錯誤似乎以前沒有發生過。

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/util/Shell
    at org.apache.hadoop.hive.conf.HiveConf$ConfVars.findHadoopBinary(HiveConf.java:906)
    at org.apache.hadoop.hive.conf.HiveConf$ConfVars.<clinit>(HiveConf.java:237)
    at org.apache.hive.jdbc.HiveConnection.isHttpTransportMode(HiveConnection.java:221)
    at org.apache.hive.jdbc.HiveConnection.openTransport(HiveConnection.java:138)
    at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:123)
    at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105)
    at java.sql.DriverManager.getConnection(DriverManager.java:571)
    at java.sql.DriverManager.getConnection(DriverManager.java:215)
    at com.merck.ghh.ingestion.HiveTableSetup.tableSetup(HiveTableSetup.java:31)
    at com.merck.ghh.ingestion.HiveTableSetup.main(HiveTableSetup.java:546)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.util.Shell
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 10 more

以下代碼導致此錯誤,特別是在連接聲明行上:

try {     
Class.forName(driverName);
     Connection connection = DriverManager.getConnection("jdbc:hive2://localhost:10000/default", "hive", "");
     Statement statement = connection.createStatement();
} catch (ClassNotFoundException exception) {
      exception.printStackTrace();
}

其他問題似乎指出這與依賴中不包括hadoop-core有關,但Hadoop 2.X中似乎不存在hadoop-core。 我特意在Hadoop 2.1.0.2.0.5.0-67中使用Hive 0.12.0。 在此錯誤之前,我遇到了問題,因為我的Hive依賴項已經在某些時候被破壞了,但我把它們放回去了,接下來發生了這個錯誤。 我想知道它是不是像忘記依賴一樣簡單,但我找不到可能缺少的依賴項。

非常感謝任何幫助。

Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.util.Shell  

當您使用Hadoop 2.X. 你需要下載hadoop-common-2.1.0-beta.jar或者
hadoop-common-2.0.0-cdh4.4.0.jar和類路徑以避免ClassNotFoundException

你是對的早先使用了hadoop-core-0.20.2-737.jar

欲了解更多信息,請訪問http://grepcode.com/

嘗試將JDBC連接器jar復制到$ HIVE_HOME / lib /文件夾中。 我遇到了類似的問題,復制jar文件對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM