3.通過hive shell開啟map輸出階段壓縮
4.開啟reduce輸出階段壓縮
在實際工作當中,hive當中處理的資料,一般都需要經過壓縮,前期我們在學習hadoop的時候,已經配置過hadoop的壓縮,我們這裡的hive也是一樣的可以使用壓縮來節省我們的mr處理的網路頻寬
壓縮格式 工具 演算法 副檔名 是否可切分
default 無 default default 否
gzip gzip default .gz 否
bzip2
bzip2
bzip2 .bz2 是
lzo lzop lzo .lzo 否
lz4 無 lz4 .lz4 否
為了支援多種壓縮/解壓縮演算法,hadoop引入了編碼/解碼器:
壓縮格式
對應的編碼/解碼器
deflate
org.apache.hadoop.io.compress.defaultcodec
gzip
org.apache.hadoop.io.compress.gzipcodec
bzip2
org.apache.hadoop.io.compress.bzip2codec
lzocom.hadoop.compression.lzo.lzopcodec
lz4org.apache.hadoop.io.compress.lz4codec
壓縮效能的比較:
壓縮演算法 原始檔案大小 壓縮檔案大小 壓縮速度 解壓速度
gzip 8.3gb 1.8gb 17.5mb/s 58mb/s
bzip2 8.3gb 1.1gb 2.4mb/s 9.5mb/s
lzo 8.3gb 2.9gb 49.3mb/s 74.6mb/s
要在hadoop中啟用壓縮,可以配置如下引數(mapred-site.xml檔案中):
開啟map輸出階段壓縮可以減少job中map和reduce task間資料傳輸量。
案例:
1.開啟hive中間傳輸資料壓縮功能:
set hive.exec.compress.intermediate=true;
2.開啟mapreduce中map輸出壓縮功能:
set mapreduce.map.output.compress=true;
3.設定mapreduce中map輸出資料的壓縮方式:
4.執行查詢語句:
select count(*) from score;
當hive將輸出寫入到表中時,輸出內容同樣可以進行壓縮。屬性hive.exec.compress.output控制著這個功能。使用者可能需要保持預設設定檔案中的預設值false,這樣預設的輸出就是非壓縮的純文字檔案了。使用者可以通過在查詢語句或執行指令碼中設定這個值為true,來開啟輸出結果壓縮功能。
案例:
1.開啟hive最終輸出資料壓縮功能
set hive.exec.compress.output=true;
2.開啟mapreduce最終輸出資料壓縮
set mapreduce.output.fileoutputformat.compress=true;
3.設定mapreduce最終資料輸出壓縮方式
4.設定mapreduce最終資料輸出壓縮為塊壓縮
set mapreduce.output.fileoutputformat.compress.type=block;
5.測試一下輸出結果是否是壓縮檔案
select * from score distribute by s_id sort by s_id desc;
hive資料壓縮
hive表通常壓縮為儲存為orc檔案,預設壓縮方法為zlib io.compression.codecs org.apache.hadoop.io.compress.defaultcodec 壓縮比約為11 建立orc壓縮表 create table zxdm dim.d acct info bac...
hive的資料壓縮
在實際工作當中,hive當中處理的資料,一般都需要經過壓縮,前期我們在學習hadoop的時候,已經配置過hadoop的壓縮,我們這裡的hive也是一樣的可以使用壓縮來節省我們的mr處理的網路頻寬 壓縮格式 工具演算法 副檔名 是否可切分 default 無default deflate 否gzip ...
Hive高階之資料壓縮詳解
一般在hadoop集群上執行乙個mapreduce會有以下步驟 input map shuffle reduce output 如果我們採用了資料壓縮,在map階段產生的資料大小就會減少,會減少磁碟的io,同時還能夠減少網路的io。hadoop集群中使用壓縮演算法的要求有以下4點 1.hadoop的...