我有一个Hive表,其中包含具有数组数据类型的列。我正在使用JDBC从表中选择行。
SELECT col1 FROM hive_table WHERE condition = 'condition'
收到结果集后,我在循环遍历结果集时对特定数组字段使用res.getArray()方法。
Array arrayCol = res.getArray(1);
这是一个"方法不支持"错误。对在Hive表上执行的此类查询使用getArray()方法是否有效?
答案 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));
}