hive的資料壓縮

2021-10-10 21:04:54 字數 2046 閱讀 5499

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