我正在对一个返回100.000行的Hive / Hadoop运行一个查询,我想启用setFetchSize,一次没有那么多行,我正在使用Hive JDBC驱动程序。
关键是同样的查询也是针对postgres运行的,或者实际上可以在其他关系数据库中运行,因此使用这个大小的功能来控制它是有意义的。
问题在于,当我调用方法setFetchSize时,我会继续得到以下内容
java.sql.SQLException:不支持方法 在org.apache.hadoop.hive.jdbc.HivePreparedStatement.setFetchSize(HivePreparedStatement.java:1229)〜[hive-jdbc-0.13.0.jar:0.13.0]
不支持此方法,如何解决此问题并实现相同的目标?
答案 0 :(得分:0)
您是否尝试设置结果集级别,我们目前还在使用0.13.0
并且调用rs.setFetchSize(5000);
对我们来说非常有用。 Spring JdbcTemplate代码片段类似于:
hiveJdbcTemplate.query(sqlToExecute, rs -> {
rs.setFetchSize(5000);
while (rs.next()){
....do you handling
}
});
希望这对你有用。默认的fetchSize只有50,如果需要获取数百万行,这种方法很小。从Hive 1.3.0
开始,通过将默认值从50增加到1000来解决此问题.Apache Hive Jira票证为:HIVE-11429。