Hadoop数据压缩 与 数据清洗ETL
生活随笔
收集整理的這篇文章主要介紹了
Hadoop数据压缩 与 数据清洗ETL
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 一、壓縮概述
- 優缺點
- 原則
- 二、MR 支持的壓縮編碼
- 三、壓縮方式選擇
- Gzip壓縮
- Bzip2 壓縮
- Lzo壓縮
- Snappy壓縮
- 壓縮位置選擇
- 四、壓縮參數配置
- 五、壓縮案例
- 六、數據清洗ETL
一、壓縮概述
優缺點
優點:減少磁盤IO、減少磁盤存儲空間;
缺點:增加CPU開銷。
原則
二、MR 支持的壓縮編碼
三、壓縮方式選擇
壓縮方式選擇時重點考慮:壓縮/解壓縮速度、壓縮率(壓縮后存儲大小)、壓縮后是否可以支持切片。
Gzip壓縮
優點:壓縮率比較高;
缺點:不支持 Split;壓縮/解壓速度一般;
Bzip2 壓縮
優點:壓縮率高;支持 Split;
缺點:壓縮/解壓速度慢。
Lzo壓縮
優點:壓縮/解壓速度比較快;支持split;
缺點:壓縮率一般;想支持切片需要額外創建索引。
Snappy壓縮
優點:壓縮和解壓縮速度快;
缺點:不支持 Split;壓縮率一般;
壓縮位置選擇
壓縮可以在 MapReduce 作用的任意階段啟用。
四、壓縮參數配置
五、壓縮案例
對于WordCount案例,Mapper/ Reducer不變,只需修改Driver;
Mapper端壓縮:
Configuration conf = new Configuration(); // 開啟 map 端輸出壓縮 conf.setBoolean("mapreduce.map.output.compress", true); // 設置 map 端輸出壓縮方式conf.setClass("mapreduce.map.output.compress.codec", BZip2Codec.class,CompressionCodec.class);Reduce 輸出端采用壓縮:
FileInputFormat.setInputPaths(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); // 設置 reduce 端輸出壓縮開啟 FileOutputFormat.setCompressOutput(job, true); // 設置壓縮的方式FileOutputFormat.setOutputCompressorClass(job, BZip2Codec.class); // FileOutputFormat.setOutputCompressorClass(job, GzipCodec.class); // FileOutputFormat.setOutputCompressorClass(job, DefaultCodec.class);六、數據清洗ETL
“ETL” 是英文Extract- Transform-Load的縮寫,用來描述將數據從來源端經過抽取(Extract)、轉換(Transform)、加載(Load)至目前端的過程。ETL一詞較常用在數據倉庫,但其對象并不限于數據倉庫。
在運行核心業務MapReduce程序之前,往往要先對數據進行清洗,清理掉不符合用戶要求的數據。清理的過程往往只需要運行Mapper程序,不需要運行Reduce程序。
總結
以上是生活随笔為你收集整理的Hadoop数据压缩 与 数据清洗ETL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php中的static
- 下一篇: Linux运行级别