2016-09-06 6 views
0

Ich habe eine Hive-Tabelle, die Spalte mit Array-Datentyp hat. Ich verwende JDBC, um Zeilen aus der Tabelle auszuwählen.Wählen Sie Array-Felder aus Hive-Tabelle mit JDBC

SELECT col1 FROM hive_table WHERE condition = 'condition' 

Nach dem resultset Empfangen res.getArray I() Methode für die spezifische Array-Feld bin mit, während sie durch resultset Looping.

Array arrayCol = res.getArray(1); 

Dies verursacht einen Fehler "Methode nicht unterstützt". Ist es zulässig, die Methode getArray() für solche Abfragen zu verwenden, die in der Hive-Tabelle ausgeführt werden?

Antwort

0

Leider nein. Sie können sehen, dass die Methode getArray() in der Klasse ResultSet für Hive JDBC nicht implementiert ist. Der tatsächliche Klassenname ist HiveBaseResultSet und der Quellcode befindet sich here.

Je nachdem, welche Art von Werten das Array enthält, muss ein Clientprogramm seinen Wert selbst dekodieren. Zum Beispiel wird eine Spalte vom Typ array <string> als einzelnes String-Objekt wie `[" VALUE1 "," VALUE2 ", ...," VALUEN "] codiert. Und wir können die getString() -Methode verwenden und jedes Objekt des Typs Array <String> oder Liste <String> frei neu konstruieren.

0

Sie können die Ergebnismenge durchlaufen und die Spaltenwerte zu arraylist in Java hinzufügen. Sehen Sie sich das folgende Beispiel an unter der Annahme, dass Ihre Tabellenspalte vom Typ String ist.

List<String> list = new ArrayList<String>(); 

    while (res.next()) { 
         list.add(res.getString(1)); 
        } 
+0

Ihre Antwort ist für die Frage nicht relevant. Sie haben erläutert, wie Sie Werte aus mehreren Datensätzen zu einer Liste hinzufügen können. Die Frage lautet jedoch, warum bei der Verwendung der Methode getArray() für Array-Datentypen ein Fehler auftritt. – mbgsuirp