首页 文章

Hive JDBC Connection NoClassDefFoundError

提问于
浏览
3

我正在使用Hive 2.1.1并尝试创建连接 . 以下是我正在尝试的代码:

private static String driverName = "org.apache.hive.jdbc.HiveDriver";

public static void main(String[] args) throws SQLException, ClassNotFoundException {
    // Register driver and create driver instance

    Class.forName(driverName);
    // get connection

    Connection con = DriverManager.getConnection("jdbc:hive2://", "", "");
    Statement stmt = con.createStatement();

    stmt.executeQuery("CREATE DATABASE userdb");
    System.out.println("Database userdb created successfully.");

    con.close();
}

这些是我在bashrc中声明的类路径:

CLASSPATH = $ CLASSPATH:/usr/lib/hive/lib/hive-jdbc-2.1.1.jar CLASSPATH = $ CLASSPATH:/ usr / local / hadoop / lib / *: . CLASSPATH = $ CLASSPATH:/usr/local/apache-hive-2.1.1-bin/lib

我收到以下错误 .

ERROR StatusLogger未找到log4j2配置文件 . 使用默认配置:仅将错误记录到控制台 . 线程“main”中的异常java.lang.NoClassDefFoundError:org / apache / hadoop / hive / ql / metadata / HiveException org.apache.hive.service.cli.thrift.EmbeddedThriftBinaryCLIService . (EmbeddedThriftBinaryCLIService.java:33)at org . apache.hive.jdbc.HiveConnection . (HiveConnection.java:163)atg.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:107)at java.sql.DriverManager.getConnection(DriverManager.java:664)at at java.ql.DriverManager.getConnection(DriverManager.java:247)位于sun.reflect的sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)的com.raad.ams.bean.HiveJdbc.main(HiveJdbc.java:17)中 . Native.MethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at com.intellij.rt.execution .application.AppMain.main(AppMain.java:147)由java.net.URLClassL引起的:java.lang.ClassNotFoundException:org.apache.hadoop.hive.ql.metadata.HiveException oader.findClass(URLClassLoader.java:381)位于java.lang.ClassLoader.loadClass(ClassLoader.java:424)的sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:331)at java.lang.ClassLoader.loadClass (ClassLoader.java:357)

任何帮助,将不胜感激 .

2 回答

  • 0

    以下是我的建议:创建一个Maven / Gradle项目并在pom中添加Hive-jdbc . 它将下载所有依赖项 .

    否则请检查:Dependencies

    您需要包含所有依赖项标签下的jar .

  • 1

    我遇到了一个类似的问题,我们在 Robot automation frameworkHive 上遇到 noclassdeffound 错误 . 它看起来是jar兼容性问题 . 我们通过将最新的 hive jdbc maven依赖项添加到pom文件来解决它,并且它有效 . 您应该检查所有必需的Hive相关jar并相应地更新它们 .

相关问题