Fil*_*nda 5 java mysql hadoop hive jdbc
我正在对Hive运行查询.相同的查询应该与其他JDBC驱动程序一起使用,这意味着其他关系数据库.
我不能使用Statement.setFetchSize方法,因为Hive JDBC 0.13.0不支持它.
我试图解决这个问题,因此,我来到另一个类似的方法:Statement.setMaxRows
在哪些情况下我应该使用Statement.setMaxRows vs Statement.setFetchsize?
是否可以互换使用它们?
谢谢.
不,你不能互换使用它们.他们做不同的事情.setMaxRows =可以整体返回的行数.setFetchSize =将在每个数据库往返中返回的数字,即
setFetchSize为JDBC驱动程序提供一个提示,指示当此Statement生成的ResultSet对象需要更多行时,应从数据库中提取的行数.
setMaxRows设置此Statement对象生成的任何ResultSet对象可以包含给指定数字的最大行数限制.
实际上,因为setFetchSize是一个提示,驱动程序可以自由地忽略它并执行它认为合适的操作.所以不要担心Hive JDBC不支持这个.
请注意,setMaxRows正在执行的是
减小ResultSet对象的大小.它不会影响查询的速度.setMaxRows不会改变实际的SQL - 使用top/limit/rownum例如 - 因此它不会改变数据库所做的工作.如果要返回更多结果,则查询将返回比限制更多的结果,然后截断它们以适合您的ResultSet.
这个答案很好地解释了setFetchSize如何重要:
对JVM中的性能和内存管理非常重要,因为它控制从JVM到数据库的网络调用数量,以及相应的用于ResultSet处理的RAM量.
| 归档时间: |
|
| 查看次数: |
5993 次 |
| 最近记录: |