Hive任務優化(2)

2022-02-12 20:28:46 字數 492 閱讀 3275

1.大多數情況下,hive會對每對join連線物件啟動乙個mapreduce任務。

2.多表關聯時,如果每個on子句都使用相同的連線鍵的話,那麼只會產生乙個mapreduce job。

3.hive總是按照從左到右的順序執行。hive會假定最後一張表是最大的表,在對每行記錄進行連線操作時,它會將其他表進行快取,然後掃瞄最後那個表進行計算。因此一般將最大表放置最後關聯。也可以提供標記,顯式告知最大表

/*+streamtable(s)*/
select /*

+streamtable(s)

*/ s.ymd,s.symbol,s.price_close,d.dividend from stock s join dividends d on s.ymd=d.ymd and s.symbol=d.symbol where s.symbol='

'

4.map-side join

/*+mapjoin(d)*/

hive優化之控制hive任務中的reduce數

1.hive自己如何確定reduce數 reduce個數的設定極大影響任務執行效率,不指定reduce個數的情況下,hive會猜測確定乙個reduce個數,基於以下兩個設定 hive.exec.reducers.bytes.per.reducer 每個reduce任務處理的資料量,預設為1000 3...

hive 幾種hive優化方法

1.通過explain或者explain extended來檢視執行計畫。explain select from u3 執行結果 stage dependencies stage 0 is a root stage stage plans stage stage 0 fetch operator l...

Hive 優化總結

1.left semi join let semi join 只是hive的一種join。left semi join是可以高效實現in exists子查詢的語義。hive本身是不支援exist和in語句的,以下sql語義 1 select a.key,a.value from a where a....