使用JDBC从Hive表中选择数组字段

时间:2016-09-06 14:35:16

标签: java hadoop jdbc hive

我有一个Hive表,其中包含具有数组数据类型的列。我正在使用JDBC从表中选择行。

SELECT col1 FROM hive_table WHERE condition = 'condition'

收到结果集后,我在循环遍历结果集时对特定数组字段使用res.getArray()方法。

Array arrayCol = res.getArray(1);

这是一个"方法不支持"错误。对在Hive表上执行的此类查询使用getArray()方法是否有效?

2 个答案:

答案 0 :(得分:2)

不幸的是,没有。您可以看到在Hive JDBC的ResultSet类中未实现getArray()方法。实际的类名是HiveBaseResultSet,源代码位于here

取决于数组所包含的值的类型,客户端程序需要自己解码其值。例如,array< string>类型的列被编码为单个String对象,如`[" VALUE1"," VALUE2",...," VALUEN"]'。我们可以使用getString()方法并自由地重新构造Array< String>类型的任何对象。或列出< String>。

答案 1 :(得分:0)

您可以遍历结果集并将列值添加到java中的arraylist。请参阅下面的示例,假设您的表列是String类型。

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

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