2016-09-06 64 views
0

我有一個具有數組數據類型的列的Hive表。我正在使用JDBC從表中選擇行。使用JDBC從Hive表中選擇數組字段

SELECT col1 FROM hive_table WHERE condition = 'condition' 

接收結果集後,我使用res.getArray()方法用於特定數組字段而經由結果集循環。

Array arrayCol = res.getArray(1); 

這是拋出一個「方法不支持」的錯誤。對在Hive表上執行的查詢使用getArray()方法是否有效?

回答

0

不幸的是,沒有。您可以看到getArray()方法未在ResultSet類中爲Hive JDBC實現。實際的類名是HiveBaseResultSet,源代碼位於here

取決於數組的類型值,客戶端程序需要自行解碼其值。例如,一列數組<字符串>被編碼爲單個字符串對象,如[[「VALUE1」,「VALUE2」,...,「VALUEN」]]。我們可以使用getString()方法並自由地重新構造Array <字符串>或列表<字符串>的任何對象。

0

您可以循環查看結果集並將列值添加到java中的ArrayList。假設您的表列是String類型,請參見下面的示例。

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

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

您的回覆與問題無關。您已經解釋瞭如何將多個記錄中的值添加到列表中,但問題是爲什麼在使用getArray()方法獲取數組數據類型時出現錯誤。 – mbgsuirp