不,你不能交替使用它们。他们做不同的事情。 setMaxRows =可以整体返回的行数。的setFetchSize =将在每个数据库往返即
setFetchSize返回数为JDBC驱动程序提供提示给 行数应该从数据库时需要用于通过生成的ResultSet对象的更多的行 被撷取这个说法。
setMaxRows设置最大行数 的限制,此Statement对象生成的任何ResultSet对象可以包含 包含给定数字。
事实上,由于setFetchSize是一个提示,驱动程序可以自由地忽略它并做它认为合适的事情。所以不要担心Hive JDBC不支持这个。
注意,所有setMaxRows正在做的是
减少ResultSet对象的大小。它不会影响查询的速度 。 setMaxRows不会更改实际的SQL - 使用 top/limit/rownum例如 - 所以它不会改变数据库的工作。如果有更多的 结果返回,那么 查询将返回比您的限制更多的结果,然后截断它们以适合您的ResultSet。
This answer做了解释的setFetchSize如何是很重要的一个很好的工作:
到JVM中的性能和内存管理非常重要,因为 它控制的网络电话从JVM到数据库中的数 以及相应的用于ResultSet处理的RAM数量。
顺便说一句,可以的setFetchSize上java.sql.Statement中以及java.sql.ResultSet中进行设置。默认值由创建结果集的Statement对象设置。提取大小可能会随时更改。 Hive JDBC拥有它自己的
HiveQueryResultSet with a setFetchSize method。
您可以参考http:// stackoverflow。com/questions/1440543 /这是什么是差异之间的设置语句获取大小在jdbc或射击一 –
你确定“setFetchsize”不支持在Hive V0.13.0? ?那么你为什么不使用V0.13.1驱动*(或0.14等)*来对付你的V0.13.0服务? –
您可能还想知道http://stackoverflow.com/questions/32707682/jdbc-limit-vs-setmaxrowsresultset –