提高hive效能的一些hiveql的建議

2021-10-09 15:39:58 字數 848 閱讀 2557

1,/*+ streamtable() */ 標識哪張是大表,有利於查詢優化器 和/*+ mapjoin( )*/類似的優化

2, hive建立索引減少mapreduce輸入的資料量

3,explain可以解釋hiveql的語句

3,  半連線semi join

在map端過濾掉不會參加join操作的資料,就可以大大節省網路i/o

選取乙個小檔案,假設是file1,將join的key抽取出來,儲存到檔案file3中,file3檔案一般很小,可以放到記憶體中。

在map階段,使用distributedcache將file3複製到各個tasktracker上,然後將file2中不在file3中的key對應的記錄過濾掉,

剩下的reduce階段的工作也reduce端join相同

用在替換in/exists 

4, from 表明

insert into a

insert into b

這樣可以避免倆次的表掃瞄  

如果有多個場景要插入到同乙個表中去或者目錄,可以建立乙個虛擬分割槽,這樣就可以插入到相同目錄了

但是第乙個用overwrite,後面都不能用否則會覆蓋前面的資料。

5,見諒減少倆表關聯時候的資料量,(如果倆個都是大表時候)

select * from a inner join b on a.a1=b.a1

下面多個job數量,卻減少每次job網路傳輸和i/o,執行效率會遠高於上面

select * from 

(select * from a group by a1) a inner join (

select * from b group by b1) on a.a1=b.a1

Hive 一些操作記錄

1.建立 建立資料庫 create database database name 建立表 列按 分割 create table table name id int,name string row format delimited fields terminated by 建立分割槽表 列按 分割 按...

hive一些特殊設定

搜尋結果顯示列名 set hive.cli.print.header true set hive.resultset.use.unique.column.names false 啟用動態分割槽 set hive.exec.dynamic.partition true set hive.exec.dy...

Hive的一些優化方法

在實際開發過程中我們要盡可能的對hive進行優化,來提高生產效率,在處理hive優化的時候我們必須把hive sql當做mapreducer來讀,從mr的執行角度來考慮優化效能,從更底層來思考如何優化運算效能。分為以下幾個方面 1.解決資料傾斜問題。2.減少job數 3.合理設定map和reduce...