我正在针对返回 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.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。
关于java - 如何使用 JDBC 驱动程序 0.13.0 在 Hive 中设置 FetchSize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32398054/