hive入門學習:hive的調優(二)
hive會把查詢轉化成為乙個或者多個階段,這樣的階段可以是mapreduce階段,抽樣階段,合併階段,limit階段等等。預設情況下hive一次只會執行乙個階段,不過某些特定的階段可能會包含眾多的階段,而這些階段並非互相依賴,可以並行執行,這樣就可以大幅度的縮短job的執行時間。如下配置來設定:set hive.exec.parallel=true來開啟並行執行。
hive提供的嚴格模式可以很好的幫助使用者減少那些意想不到的不好的影響。可以通過set hive.mapred.mode=strict;來開啟嚴格模式。嚴格模式分為以下的三種:
(1)對於分割槽表,在where字句中必須包含分割槽欄位的過濾條件,否則就不允許執行。也就是說,使用者不可以掃瞄所有的分割槽。因為分割槽表通常都會含有很大的資料集,並且增加迅速,不進行過濾會載入很多的資料造成i/o瓶頸。
(2)對於使用order by 語句的查詢,必須使用limit語句來限制。因為order by會把所有的資料都shuffle到同乙個reducer中。造成單節點壓力過大。limit會限制資料的大小,僅僅對limit的資料進行排序。
(3)限制笛卡爾積的查詢。在傳統的關係型資料庫中,ab兩個表的鏈結用where語句來進行filter,然後會把where轉化成為高效的on關鍵字進行鏈結,但是hive並不存在這種優化,當資料表足夠大的時候,就會出現不可控的情況。所以不能使用where關鍵字,只能使用on關鍵字。
hive效能調優
原文 limit 限制調整 因為使用 limit 語句時候,是先執行整個查詢語句,然後再返回部分結果的 set hive.limit.optimize.enable true set hive.limit.row.max.size 10000 set hive.limit.optimize.limi...
Hive效能調優
軟體環境 hive1.2.1 hadoop2.6.4 直接使用hive cli模式執行 1.設定執行引擎 set hive.execution.engine mr set hive.execution.engine spark 如果設定執行引擎為mr,那麼就會呼叫hadoop的maprecude來執...
Hive引數調優
一 map 階段的優化 1.map數的計算公式為 num map tasks max min mapred.min.spilt.size 指的是資料的最小分割單元大小 預設為1b mapred.max.split.size 指的是資料的最大分割單元大小 預設為 256mb dfs.block.siz...