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

SELECT col1 FROM hive_table WHERE condition = 'condition'

收到结果集后,我在遍历结果集的同时对特定的数组字段使用res.getArray()方法。
Array arrayCol = res.getArray(1);

这将引发“方法不支持”错误。将getArray()方法用于在Hive表上执行的此类查询是否有效?

最佳答案

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

取决于数组所保存的值的类型,客户端程序需要自行解码其值。例如,类型为array 的列被编码为单个String对象,例如“[“VALUE1”,“VALUE2”,...,“VALUEN”]“。我们可以使用getString()方法并自由地重建Array 或List 类型的任何对象。

08-25 03:50