2021年大数据Hive(九):Hive的数据压缩
全網(wǎng)最詳細(xì)的大數(shù)據(jù)Hive文章系列,強(qiáng)烈建議收藏加關(guān)注!
新文章都已經(jīng)列出歷史文章目錄,幫助大家回顧前面的知識重點(diǎn)。
目錄
系列歷史文章
前言
Hive的數(shù)據(jù)壓縮
一、MR支持的壓縮編碼
二、壓縮配置參數(shù)
三、開啟Map輸出階段壓縮
1、開啟hive中間傳輸數(shù)據(jù)壓縮功能
2、開啟mapreduce中map輸出壓縮功能
3、設(shè)置mapreduce中map輸出數(shù)據(jù)的壓縮方式
4、執(zhí)行查詢語句
四、開啟Reduce輸出階段壓縮
1、開啟hive最終輸出數(shù)據(jù)壓縮功能
2、開啟mapreduce最終輸出數(shù)據(jù)壓縮
3、設(shè)置mapreduce最終數(shù)據(jù)輸出壓縮方式
4、設(shè)置mapreduce最終數(shù)據(jù)輸出壓縮為塊壓縮
5、測試一下輸出結(jié)果是否是壓縮文件
系列歷史文章
2021年大數(shù)據(jù)Hive(十二):Hive綜合案例!!!
2021年大數(shù)據(jù)Hive(十一):Hive調(diào)優(yōu)
2021年大數(shù)據(jù)Hive(十):Hive的數(shù)據(jù)存儲格式
2021年大數(shù)據(jù)Hive(九):Hive的數(shù)據(jù)壓縮
2021年大數(shù)據(jù)Hive(八):Hive自定義函數(shù)
2021年大數(shù)據(jù)Hive(七):Hive的開窗函數(shù)
2021年大數(shù)據(jù)Hive(六):Hive的表生成函數(shù)
2021年大數(shù)據(jù)Hive(五):Hive的內(nèi)置函數(shù)(數(shù)學(xué)、字符串、日期、條件、轉(zhuǎn)換、行轉(zhuǎn)列)
2021年大數(shù)據(jù)Hive(四):Hive查詢語法
2021年大數(shù)據(jù)Hive(三):手把手教你如何吃透Hive數(shù)據(jù)庫和表操作(學(xué)會秒變數(shù)倉大佬)
2021年大數(shù)據(jù)Hive(二):Hive的三種安裝模式和MySQL搭配使用
2021年大數(shù)據(jù)Hive(一):Hive基本概念
前言
?2021大數(shù)據(jù)領(lǐng)域優(yōu)質(zhì)創(chuàng)作博客,帶你從入門到精通,該博客每天更新,逐漸完善大數(shù)據(jù)各個知識體系的文章,幫助大家更高效學(xué)習(xí)。
有對大數(shù)據(jù)感興趣的可以關(guān)注微信公眾號:三幫大數(shù)據(jù)
Hive的數(shù)據(jù)壓縮
在實(shí)際工作當(dāng)中,hive當(dāng)中處理的數(shù)據(jù),一般都需要經(jīng)過壓縮,可以使用壓縮來節(jié)省我們的MR處理的網(wǎng)絡(luò)帶寬
一、MR支持的壓縮編碼
| 壓縮格式 | 工具 | 算法 | 文件擴(kuò)展名 | 是否可切分 |
| DEFAULT | 無 | DEFAULT | .deflate | 否 |
| Gzip | gzip | DEFAULT | .gz | 否 |
| bzip2 | bzip2 | bzip2 | .bz2 | 是 |
| LZO | lzop | LZO | .lzo | 否 |
| LZ4 | 無 | LZ4 | .lz4 | 否 |
| Snappy | 無 | Snappy | .snappy | 否 |
為了支持多種壓縮/解壓縮算法,Hadoop引入了編碼/解碼器,如下表所示
| 壓縮格式 | 對應(yīng)的編碼/解碼器 |
| DEFLATE | org.apache.hadoop.io.compress.DefaultCodec |
| gzip | org.apache.hadoop.io.compress.GzipCodec |
| bzip2 | org.apache.hadoop.io.compress.BZip2Codec |
| LZO | com.hadoop.compression.lzo.LzopCodec |
| LZ4 | org.apache.hadoop.io.compress.Lz4Codec |
| Snappy | org.apache.hadoop.io.compress.SnappyCodec |
壓縮性能的比較
| 壓縮算法 | 原始文件大小 | 壓縮文件大小 | 壓縮速度 | 解壓速度 |
| 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 |
On a single core of a Core i7 processor in 64-bit mode, Snappy compresses?at about 250 MB/sec or more and?decompresses?at about?500 MB/sec or more.
二、壓縮配置參數(shù)
要在Hadoop中啟用壓縮,可以配置如下參數(shù)(mapred-site.xml文件中):
| 參數(shù) | 默認(rèn)值 | 階段 | 建議 |
| io.compression.codecs ?? (在core-site.xml中配置) | org.apache.hadoop.io.compress.DefaultCodec,?org.apache.hadoop.io.compress.GzipCodec, org.apache.hadoop.io.compress.BZip2Codec, org.apache.hadoop.io.compress.Lz4Codec | 輸入壓縮 | Hadoop使用文件擴(kuò)展名判斷是否支持某種編解碼器 |
| mapreduce.map.output.compress | false | mapper輸出 | 這個參數(shù)設(shè)為true啟用壓縮 |
| mapreduce.map.output.compress.codec | org.apache.hadoop.io.compress.DefaultCodec | mapper輸出 | 使用LZO、LZ4或snappy編解碼器在此階段壓縮數(shù)據(jù) |
| mapreduce.output.fileoutputformat.compress | false | reducer輸出 | 這個參數(shù)設(shè)為true啟用壓縮 |
| mapreduce.output.fileoutputformat.compress.codec | org.apache.hadoop.io.compress.?DefaultCodec | reducer輸出 | 使用標(biāo)準(zhǔn)工具或者編解碼器,如gzip和bzip2 |
| mapreduce.output.fileoutputformat.compress.type | RECORD | reducer輸出 | SequenceFile輸出使用的壓縮類型:NONE和BLOCK |
三、開啟Map輸出階段壓縮
開啟map輸出階段壓縮可以減少job中map和Reduce task間數(shù)據(jù)傳輸量。具體配置如下:
案例實(shí)操:
1、開啟hive中間傳輸數(shù)據(jù)壓縮功能
hive(default)>set hive.exec.compress.intermediate=true;
2、開啟mapreduce中map輸出壓縮功能
hive (default)>set mapreduce.map.output.compress=true;
3、設(shè)置mapreduce中map輸出數(shù)據(jù)的壓縮方式
hive (default)>set mapreduce.map.output.compress.codec=?org.apache.hadoop.io.compress.SnappyCodec;
4、執(zhí)行查詢語句
select count(1)?from score;
四、開啟Reduce輸出階段壓縮
當(dāng)Hive將輸出寫入到表中時,輸出內(nèi)容同樣可以進(jìn)行壓縮。屬性hive.exec.compress.output控制著這個功能。用戶可能需要保持默認(rèn)設(shè)置文件中的默認(rèn)值false,這樣默認(rèn)的輸出就是非壓縮的純文本文件了。用戶可以通過在查詢語句或執(zhí)行腳本中設(shè)置這個值為true,來開啟輸出結(jié)果壓縮功能。
案例實(shí)操:
1、開啟hive最終輸出數(shù)據(jù)壓縮功能
set?hive.exec.compress.output=true;
2、開啟mapreduce最終輸出數(shù)據(jù)壓縮
set?mapreduce.output.fileoutputformat.compress=true;
3、設(shè)置mapreduce最終數(shù)據(jù)輸出壓縮方式
set?mapreduce.output.fileoutputformat.compress.codec =?org.apache.hadoop.io.compress.SnappyCodec;
4、設(shè)置mapreduce最終數(shù)據(jù)輸出壓縮為塊壓縮
set?mapreduce.output.fileoutputformat.compress.type=BLOCK;
5、測試一下輸出結(jié)果是否是壓縮文件
insert?overwrite local?directory '/export/data/exporthive/compress'?select?*?from?score distribute by?sid sort by?sscore desc;
- 📢博客主頁:https://lansonli.blog.csdn.net
- 📢歡迎點(diǎn)贊 👍 收藏 ?留言 📝 如有錯誤敬請指正!
- 📢本文由 Lansonli 原創(chuàng),首發(fā)于 CSDN博客🙉
- 📢大數(shù)據(jù)系列文章會每天更新,停下休息的時候不要忘了別人還在奔跑,希望大家抓緊時間學(xué)習(xí),全力奔赴更美好的生活?
總結(jié)
以上是生活随笔為你收集整理的2021年大数据Hive(九):Hive的数据压缩的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年大数据Hive(八):Hive
- 下一篇: 女友问粉丝过万如何庆祝,我发万字长文《保