2016-12-15 17 views
0

Hive2コネクタを使用してImpalaにJDBC経由で接続を作成しようとしています。Hive JDBCエラー:java.lang.NoSuchFieldError:HIVE_CLI_SERVICE_PROTOCOL_V7

<dependency> 
     <groupId>org.apache.hive</groupId> 
     <artifactId>hive-exec</artifactId> 
     <version>1.1.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.hive</groupId> 
     <artifactId>hive-jdbc</artifactId> 
     <version>1.1.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.hadoop</groupId> 
     <artifactId>hadoop-common</artifactId> 
     <version>2.6.0</version> 
    </dependency> 

私はハイブ1.1.0とのHadoopでCDH 5.8.0を使用しています:それはdepencencyの互換性の問題である場合、私は知らない

Exception in thread "main" java.lang.NoSuchFieldError: HIVE_CLI_SERVICE_PROTOCOL_V7 
     at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:175) 
     at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105) 
     at java.sql.DriverManager.getConnection(DriverManager.java:664) 
     at java.sql.DriverManager.getConnection(DriverManager.java:208) 
     at dsnoc.dsnoc_api.dolar.getDolarFromImpala(dolar.java:145) 
     at dsnoc.dsnoc_api.dsnoc.main(dsnoc.java:75) 

:しかし、私はこのエラーを取得しています2.6.0

それともコードの問題です:

public static double getDolarFromImpala(String date) { 
    double dolar = 0.0; 
    try { 
     Class.forName(JDBC_DRIVER_HIVE); 
     String sql = "SELECT valor FROM dolar where fecha ='"+date+"'"; 

     Connection con = DriverManager.getConnection(JDBC_HIVE2_URL,USERNAME,PASSWORD); 
     Statement stmt = con.createStatement(); 
     ResultSet rs = stmt.executeQuery(sql); 

     while(rs.next()){ 
      dolar = rs.getDouble("valor");           
     } 
     stmt.close(); 
     con.close(); 
    } 
    catch(SQLException se){ 
      //Handle errors for JDBC 
      se.printStackTrace(); 
    } 
    catch(Exception e){ 
      //Handle errors for Class.forName 
      e.printStackTrace(); 
    } 
    return dolar; 
} 

しかし、私はインパラ-JDBCでそれを試してみましたが、働いていたので、ないと思います。

[Simba][ImpalaJDBCDriver](500051) ERROR processing query/statement. Error Code: 0, SQL state: TStatus(statusCode:ERROR_STATUS, sqlState:HY000, errorMessage:AuthorizationException: User '' does not have privileges to execute 'SELECT' 

よろしく、

+2

依存関係に不一致があるようです。 –

+0

Impalaに接続する場合は、ClouderaのWebサイトで入手可能なImpala JDBCドライバを使用してください。 MySQLドライバまたはOracleドライバを試しますか?いいえ、Apache Hiveドライバで時間を浪費しないでください(これは、JDBC機能のサポートが非常に限られていて、古いHiveサーバーのバージョンなどでは機能しません。多くの場合、Cloudera Hiveドライバが良い選択です) –

+0

Impala-JDBCはUSERNAMEとPASSWORDを読み込まないため、hive2を使用しています。 –

答えて

0

はこれを試してみてください:それは私にこのエラーを投げ、USERNAMEPASSWORDを読み取るか、または送信していないので

他の事は、私がインパラ-JDBCを使用していないということです瓶:

  • ハイブ-JDBC-2.1.1-standalone.jar
  • Hadoopの共通-2.7.3.jar

depencency:

<dependency> 
    <groupId>org.apache.hive</groupId> 
    <artifactId>hive-jdbc</artifactId> 
    <version>2.1.1</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.hadoop</groupId> 
    <artifactId>hadoop-common</artifactId> 
    <version>2.7.3</version> 
</dependency> 

あなたはここで、この瓶を見つけることができます:JMeterの中で私のために働いhttps://search.maven.org

このjarファイルを。

関連する問題