Ich versuche, eine Verbindung über JDBC zu Impala mit dem Hive2-Connector zu erstellen. Aber ich bin immer diese Fehlermeldung:Hive JDBC-Fehler: java.lang.NoSuchFieldError: HIVE_CLI_SERVICE_PROTOCOL_V7
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)
Ich weiß nicht, ob es sich um eine depencency Kompatibilitätsproblem ist:
<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>
Ich bin mit CDH 5.8.0 mit Hive 1.1.0 und Hadoop 2.6.0
Oder vielleicht ist-Code Ausgabe:
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;
}
Aber ich denke nicht, weil ich es mit einem Impala-JDBC versucht und arbeitete .
andere Sache ist, dass ich nicht die Impala-JDBC verwenden, da es nicht liest tun oder sendet die USERNAME
und PASSWORD
, warf mir diesen Fehler:
[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'
Grüße,
Es klingt, als ob Sie in Abhängigkeiten nicht übereinstimmen. –
Wenn Sie eine Verbindung zu Impala herstellen möchten, verwenden Sie einfach den Impala JDBC-Treiber, der auf der Cloudera-Website verfügbar ist. Würden Sie einen MySQL-Treiber oder einen Oracle-Treiber versuchen? Nein. Verlieren Sie nicht Ihre Zeit mit dem Apache Hive-Treiber (BTW hat nur sehr eingeschränkte Unterstützung für JDBC-Funktionen, funktioniert nicht mit älteren Hive-Server-Versionen usw.) - Der Cloudera Hive-Treiber ist in vielen Fällen die bessere Wahl. –
Ich benutze hive2, weil Impala-JDBC den BENUTZERNAMEN und PASSWORT nicht liest. –