如何使用JDBC驱动程序0.13.0在Hive中setFetchSize

时间:2015-09-04 12:26:59

标签: java hadoop jdbc hive

我正在对一个返回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]

不支持此方法,如何解决此问题并实现相同的目标?

1 个答案:

答案 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。