Ich habe den folgenden Code verwendet, um eine Verbindung zur Hive-Datenbank herzustellen. Der erste Teil beschreibt die Tabelle und der zweite Teil führt eine Auswahlabfrage aus. Die Select-Abfrage funktioniert einwandfrei, ruft jedoch keine Zeile ab.Hive-JDBC: Keine Zeilenausnahme beim Abrufen von Daten aus der Hive-Tabelle über die Hive-JDBC-Verbindung
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;
public class HiveJdbcClient {
private static String driverName = "org.apache.hive.jdbc.HiveDriver";
public static void main(String[] args) throws SQLException {
try {
Class.forName(driverName);
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.exit(1);
}
Connection con = DriverManager.getConnection("jdbc:hive2://hostname:10000", "mapr", "mapr");
Statement stmt = con.createStatement();
String tableName1 = "default.newEmployee";
// describe table
String sql = null;
sql = "describe " + tableName1;
System.out.println("Running: " + sql);
ResultSet res = stmt.executeQuery(sql);
while (res.next()) {
System.out.println(res.getString(1) + "\t" + res.getString(2));
}
// select * query
sql = "select name from " + tableName1;
System.out.println("Running: " + sql);
res = stmt.executeQuery(sql);
System.out.println("Complete");
System.out.println("reslut "+res.getBoolean(0));
}
}
Wenn ich mich anmelden und eine Auswahl machen, bekomme ich mehr als eine Million Zeilen. Jeder bitte vorschlagen, Wenn ich hier etwas falsch mache.
Könnten Sie die Ausnahmemeldung? –
Kannst du die Zeile 'System.out.println (res.getString (1) +" \ t "+ res.getString (2));' für diese 'System.out.println (res.getString (0) + "\ t" + res.getString (1)); '? –
@JaimeCr Running: default.newEmployee Name \t Zeichenfolge Lauf beschreiben: select name from default.newEmployee Grenze 1 komplette Exception in thread "main" java.sql.SQLException: keine Zeile gefunden. \t bei org.apache.hive.jdbc.HiveBaseResultSet.getColumnValue (HiveBaseResultSet.java: 399) Grundsätzlich beschreiben beschreiben funktioniert gut. System.out.println (res.getString (1) + "\ t" + res.getString (2)) Dies druckt das erste und zweite Element aus der Antwort von describe, dh Spaltenname und seinen Datentyp. Problem tritt auf, wenn ich Daten mit Select – GauravVijay