[Hive]Hive中表連線的優化,加快查詢速度
1、多表連線的執行順序和MapReduce job優化
select
a.ymd
,a.price_close
,b.price_close
,c.price_close
from stocks a join stocks b on a.ymd = b.ymd
join stocks c on a.ymd = c.ymd
where a.symbol = 'APPL' and b.symbol = 'IBM' and c.symbol = 'GE'
大多數情況下Hive會對每對 JOIN 連線物件啟動一個MapReduce任務。上例中會首先啟動一個MapReduce job對錶 a 和表 b 進行連線操作,
然後會啟動一個MapReuce job將第一個MapReduce job的輸出和表 c 進行連線操作。
當對3個或者更多個表進行 JOIN 連線時,如果每個 ON 子句都使用相同的連線鍵的話,那麼只會產生一個 Map Reduce job。
即Hive通過一個優化可以在同一個Map Reduce job 中連線多個表(需要每個子句中有相同的連線鍵)。
2、JOIN連線時表的順序(內連線)
Hive假定查詢中最後一個表是最大的那個表,在對每行記錄進行連線操作時,它會嘗試將其他表快取起來,然後掃描最後那個表進行計算。
因此使用者需要保證連續查詢中表的大小從左往右是依次增加的。
使用者也可以人為顯示告訴查詢優化器哪張表是大表,即使它在查詢中不是位於最後面的,使用方式如下:
select /*+STREAMTABLE(s)*/s.ymd, s.symbol,s.price_close,d.dividend
from stocks s JOIN dividends d ON s.ymd = d.ymd and s.symbol = d.symbol
where s.symbol='APPL'
3、連線前通過WHERE過濾資料加快查詢資料
最直接了當的方式是使用巢狀SELECT語句:
select
s.ymd,s.symbol,s.price_close,d.dividends
from
(
select * from stocks
where symbol = 'AAPL' and exchange = 'NASDAQ'
)s
left outer join
(
select * from dividends
where symbol = 'AAPL' and exchange = 'NASDAQ'
)d
on s.ymd = d.ymd
4、map-side JOIN 優化含有小表的連線
如果所有表中只有一張表是小表,則可以在最大的表通過mapper的時候將小表完全放到記憶體中。Hive可以在map端執行連線過程(稱為mao-side JOIN),這是因為
Hive可以和記憶體中的小表逐一匹配,從而省略常規連線操作需要的reduce過程。不僅減少了reduce過程,有時也可以同時減少map過程的執行步驟。
set hive.auto.convert.join=true; --讓Hive在必要的時候啟動優化
hive.mapjoin.smalltable.filesize=25000000; --設定能夠使用這個優化的小表的大小(單位是位元組)
相關文章
- Hive --------- hive 的優化Hive優化
- [Hive]Hive排序優化Hive排序優化
- Hive -------- hive常見查詢練習Hive
- [Hive]Hive實現抽樣查詢Hive
- hive的優化Hive優化
- hive查詢注意事項和調優Hive
- Hive||beeline連線的InvalidURLHive
- hive、spark優化HiveSpark優化
- 優化sql查詢速度優化SQL
- Hive高階優化Hive優化
- Hive高階操作-查詢操作Hive
- 【資料庫】查詢優化之子連線優化資料庫優化
- Hadoop(五)C#連線HiveHadoopC#Hive
- hive優化-資料傾斜優化Hive優化
- hive表查詢中文顯示亂碼Hive
- Hive優化相關設定Hive優化
- Hive企業級效能優化Hive優化
- springboot連線hive無法啟動Spring BootHive
- 報表連 hive,資料量比較大,怎麼分頁查詢?Hive
- hive on spark執行速度慢HiveSpark
- Hive 優缺點Hive
- SQL連線查詢優化[姊妹篇.第五彈]SQL優化
- 好程式設計師大資料學習路線之hive表的查詢程式設計師大資料Hive
- 【Hadoop】pyhton連結hiveHadoopHive
- Hive的壓縮儲存和簡單優化Hive優化
- Hive使用Calcite CBO優化流程及SQL優化實戰Hive優化SQL
- PostgreSQL 原始碼解讀(36)- 查詢語句#21(查詢優化-消除外連線)SQL原始碼優化
- Hive調優實用Hive
- Web 效能優化:21 種優化 CSS 和加快網站速度的方法Web優化CSS網站
- Hive內部函式簡介及查詢語法Hive函式
- 使用Presto查詢hive表資料時報"Error opening Hive split hdfs"問題,及解決方法RESTHiveError
- 連線查詢
- 【Hive】資料傾斜優化 shuffle, join, group byHive優化
- 【譯】Web 效能優化:21種優化CSS和加快網站速度的方法Web優化CSS網站
- hive企業級調優Hive
- Hive學習之Hive的安裝Hive
- mysql千萬級資料量根據索引優化查詢速度MySql索引優化
- Hive常用效能優化方法實踐全面總結Hive優化