不,你不能交替使用它們。他們做不同的事情。 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 –