hive 優化與設定

2021-10-01 18:29:40 字數 2069 閱讀 1690

配置mapreduce.job.reduce.slowstart.completedmaps引數

該引數預設為 0.05, 表示map執行 5%之後,開始reduce過程。如果集群資源不夠,有可能導致reduce把資源全搶光,可以把這個引數調整到0.8,map完成80%後才開始reduce copy 過程。

可以配置為如下:

set mapreduce.job.reduce.slowstart.completedmaps=0.8;  -- map 執行了 80%後再執行reduce

set mapreduce.job.reduce.slowstart.completedmaps=0.9;

配置中間資料壓縮屬性 hive.exec.compress.intermediate ,該引數預設為false-不壓縮。可設定為 true-壓縮。

配置輸出結果壓縮功能hive.exec.compress.output ,該引數預設為 false-不壓縮。可以設定為true-開啟壓縮功能。注意如果開啟,則需要為其制定乙個編解碼器。

map的輸出是否壓縮 mapred.compress.map.output ,該引數預設為false-不壓縮。可設定為 true-壓縮。

map的輸出壓縮方式 mapred.map.output.compression.codec ,該引數預設 mapred.map.output.compression.codec=org.apache.hadoop.io.compress.defaultcodec。

reduce的輸出是否壓縮mapred.output.compress ,(待驗證)

reduce的輸出壓縮方式 mapred.output.compression.codec , 該引數預設 mapred.output.compression.codec=org.apache.hadoop.io.compress.defaultcodec

hive中預設將null存為\n。那麼這就是問題了,hive無法區別真正的空值與'null'字串

使用is null可以檢索出儲存為\n的資料

使用='null'可以檢索出為'null'字串的資料

解決方案

在建表時加入如下hivesql語句

null defined as '' 

-- 或

with serdeproperties('serialization.null.format' = '')

在建表完成後設定表的屬性,使用如下hivesql語句

alter table  set serdeproperties ('serialization.null.format' = 'null');

設定不顯示欄位名

set hive.cli.print.header=false;

設定顯示欄位名

set hive.cli.print.header=true;

設定只顯示欄位名,不顯示表名稱

set hive.resultset.use.unique.column.names=false;

設定顯示 表名稱.欄位名

set hive.resultset.use.unique.column.names=true;

distinct的列中如果含有null值,會導致結果不准,需要將null值替換為乙個統一的值

解決方案

原查詢語句 hive> select count(distinct a, b, c)) from ;

優化後語句 hive> select count(distinct nvl(a, 0), b, c) from ; 

備註:nvl(a, 0) 是空置轉換函式,如果a字段值為空,則用0替換

延伸:nvl2(a, b, c) 含義為:如果a值為空,則用c置換,如果a不為空,則用b置換

Hive的常用優化設定

設定名稱 set mapred.job.name test 每個map最大輸入大小 set mapred.max.split.size 300000000 每個map最小輸入大小 set mapred.min.split.size 100000000 執行map前進行小檔案合併 set hive.i...

hive查詢與優化

今早的過濾資料,盡可能的減少資料在每個階段的輸入和輸出,使用分割槽表時,要使用分割槽條件進行過濾 可以使用中間表來完成一些複雜的操作 join操作時,將小表放在join的左邊 union all的個數大於2,可以考慮使用inset into來優化 根據資料的本身特點,在使用join 和group b...

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...