Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 配置单元中Statement.setMaxRows与Statement.setFetchsize之间的区别是什么_Java_Mysql_Hadoop_Jdbc_Hive - Fatal编程技术网

Java 配置单元中Statement.setMaxRows与Statement.setFetchsize之间的区别是什么

Java 配置单元中Statement.setMaxRows与Statement.setFetchsize之间的区别是什么,java,mysql,hadoop,jdbc,hive,Java,Mysql,Hadoop,Jdbc,Hive,我正在运行针对Hive的查询。同样的查询应该与其他JDBC驱动程序(也就是说,其他关系数据库)一起使用 我不能使用方法语句.setFetchSize,因为配置单元JDBC 0.13.0不支持它 我正试图解决这个问题,因此,我采用了另一种类似的方法:语句。setMaxRows 在哪些情况下,我应该使用Statement.setMaxRows vs Statement.setFetchsize 可以互换使用吗 谢谢。不,不能互换使用。他们做不同的事情。setMaxRows=可以返回的总行数。setF

我正在运行针对Hive的查询。同样的查询应该与其他JDBC驱动程序(也就是说,其他关系数据库)一起使用

我不能使用方法语句.setFetchSize,因为配置单元JDBC 0.13.0不支持它

我正试图解决这个问题,因此,我采用了另一种类似的方法:语句。setMaxRows

在哪些情况下,我应该使用Statement.setMaxRows vs Statement.setFetchsize

可以互换使用吗


谢谢。

不,不能互换使用。他们做不同的事情。setMaxRows=可以返回的总行数。setFetchSize=将在每次数据库往返中返回的编号,即

给JDBC驱动程序一个关于 当有更多行时,应从数据库中提取的行数 此语句生成的ResultSet对象需要

设置最大行数的限制 此语句对象生成的任何ResultSet对象都可以 包含到给定的数字

事实上,由于setFetchSize是一个提示,驱动程序可以随意忽略它,并做它认为合适的事情。所以不要担心HiveJDBC不支持这一点

请注意,setMaxRows所做的只是

减小ResultSet对象的大小。这不会影响速度 查询的最后一步。setMaxRows不会更改实际使用的SQL 例如,top/limit/rownum-这样它就不会改变DB所做的工作。这个 如果有更多结果,查询将返回比您的限制更多的结果 返回结果,然后截断它们以适合您的结果集

很好地解释了setFetchSize的重要性:

对于JVM内的性能和内存管理非常重要 它控制从JVM到数据库的网络调用的数量 以及相应地用于结果集处理的RAM量


顺便说一句,setFetchSize可以在java.sql.Statement和java.sql.ResultSet上设置。默认值由创建结果集的语句对象设置。提取大小可以随时更改。Hive JDBC也有自己的功能。

您可以参考Hive V0.13.0中是否确实不支持“setFetchsize”??那么为什么不针对V0.13.0服务使用V0.13.1驱动程序(或0.14等)?您可能也想知道