2017-01-17 16 views
1

Hive 2.1.1を使用していて、接続を作成しようとしています。次は私がしようとしているコードです:Hive JDBC接続NoClassDefFoundError

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 No log4j2 configuration file found. Using default configuration: logging only errors to the console. Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hive/ql/metadata/HiveException at org.apache.hive.service.cli.thrift.EmbeddedThriftBinaryCLIService.(EmbeddedThriftBinaryCLIService.java:33) at org.apache.hive.jdbc.HiveConnection.(HiveConnection.java:163) at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:107) at java.sql.DriverManager.getConnection(DriverManager.java:664) at java.sql.DriverManager.getConnection(DriverManager.java:247) at com.raad.ams.bean.HiveJdbc.main(HiveJdbc.java:17) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.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) Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.ql.metadata.HiveException at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

助けてください。

+0

依存性の頭痛を取り除くには、 "hive-jdbc - ** standalone ** - 2.1.1.jar"を使用してください。 –

+0

警告:いわゆる "スタンドアロン" JARの場合でも、 'hadoop CLASSPATHに '-common.jar'と' commons-configuration.jar'、そしておそらく 'hadoop-auth.jar'(Kerberosに必要です) –

答えて

1

ここに私が示唆しているものがあります:Maven/Gradleプロジェクトを作成し、pomにHive-jdbcを追加します。すべての依存関係をダウンロードします。

そうでない場合は、このチェック:あなたは依存関係タグの下にあるすべてのjarファイルを含める必要がDependencies

を。