只是想知道如何做限制工作,爲下面的簡單查詢HIVE:'SELECT * from'上的'LIMIT'如何在內部工作?
select * from T limit 100
試想一下表T有13萬條記錄
請問上面的查詢:
1.第一負荷共13多萬元建成的內存&在結果集中只顯示100條記錄?只有100 &
2.負載給出結果集的100條記錄
正在尋找它很長一段時間,現在,大部分的網頁只談使用「限制」,但不涉及如何配置單元用它的下引擎蓋。
讚賞有用的回覆。
只是想知道如何做限制工作,爲下面的簡單查詢HIVE:'SELECT * from'上的'LIMIT'如何在內部工作?
select * from T limit 100
試想一下表T有13萬條記錄
請問上面的查詢:
1.第一負荷共13多萬元建成的內存&在結果集中只顯示100條記錄?只有100 &
2.負載給出結果集的100條記錄
正在尋找它很長一段時間,現在,大部分的網頁只談使用「限制」,但不涉及如何配置單元用它的下引擎蓋。
讚賞有用的回覆。
在引擎蓋下,配置單元中的「選擇」發出FETCH任務,而不是稀釋mapreduce任務。想想它就像是一個 hadoop fs -get這裏要指出的是FETCH任務只適用於 SELECT *,如果你選擇列取指可能不起作用。
來源:https://vcfvct.wordpress.com/2016/02/18/make-hive-query-faster-with-fetch-task/
如果沒有施加優化器,蜂房結了掃描整個表。但是蜂房優化 這與釋放的HIVE-2925部分hive.fetch.task.conversion,爲了緩解 用簡單的條件,簡單的查詢,而不是在所有 運行MR/TEZ。
支持的值是none,minimal和更多。
無:禁用hive.fetch.task.conversion(在蜂房0.14.0加入值HIVE-8389)
最小:SELECT *,上分區列FILTER(WHERE和HAVING子句) ,僅限制
更:SELECT,FILTER,僅限制(包括TABLESAMPLE,虛擬列)
你的問題更利當最小或更多設置時,會發生什麼情況。 它只是通過掃描添加的文件和讀取行,直到達到 leastRows()更多是指gitCode,Config和here
,所以你的意思是說它只加載100內存? –
是的,檢查在這裏https://github.com/apache/hive/blob/release-1.2.1/ql/src/java/org/apache/hadoop/hive/ql/exec/FetchTask.java#L146 – rbyndoor
**(1)**運行一個思想實驗和驗證你的建議(記住,我們是處理分佈式系統)**(2)**建議一個技術測試來指示實際的算法。 –
這有什麼關係?它最好是隨機的,除非你包括一個順序的子句,在這一點上你知道答案。 – Andrew
「2.僅裝載100個」...它會如何加載它們?來自哪裏?如果你有1000臺機器,每臺機器只有1條記錄呢?所有機器將運行相同的'SELECT * LIMIT 100'查詢 –