Hadoop(十九)MapReduce OutputFormat 資料壓縮

一年都在冬眠發表於2024-09-19

OutputFormat

  • OutputFormat是MapReduce輸出的基類,所有實現MapReduce輸出都實現了OutputFormat介面
  • 幾種常見的OutputFormat實現類:NullOutputFormat、MapFileOutputFormat、TextOutputFormat等

自定義OutputFormat

  • 應用場景:輸出資料到MySQL/HBase/Elasticsearch等儲存框架中
  • 步驟:自定義一個類繼承FileOutputFormat —> 改寫RecordWriter,具體改寫輸出資料的方法write()

資料壓縮

一、概述

  • 優點:減少磁碟IO和儲存空間
  • 缺點:增加CPU開銷
  • 壓縮原則:運算密集型的作業少用壓縮;IO密集型的作業多用壓縮

二、MR支援的壓縮編碼

壓縮格式 是否Hadoop自帶 演算法 副檔名 是否可切片 換成壓縮格式後,原來的程式是否需要修改 優點 缺點
DEFLATE 是,直接使用 DEFLATE .deflate 和文字處理一樣,不需要修改
Gzip 是,直接使用 DEFLATE .gz 和文字處理一樣,不需要修改 壓縮率比較高 不支援Split;壓縮/解壓速度一般
bzip2 是,直接使用 bzip2 .bz2 和文字處理一樣,不需要修改 壓縮率高;支援Split 壓縮/解壓速度慢
LZO 否,需要安裝 LZO .lzo 需要建索引,還需要指定輸入格式 壓縮/解壓速度比較快;支援Split 壓縮率一般;想支援切片需要額外建立索引
Snappy 是,直接使用 Snappy .Snappy 和文字處理一樣,不需要修改 壓縮和解壓縮速度快 不支援Split;壓縮率一般
  • 壓縮方式選擇時重點考慮:壓縮/解壓縮速度、壓縮率(壓縮後儲存大小)、壓縮後是否可以支援切片
  • 壓縮可以在MapReduce作用的任意階段啟用

相關文章