幾種壓縮方式對比:
LZO example:
https://github.com/twitter/hadoop-lzo/blob/master/src/test/java/com/hadoop/mapreduce/TestLzoTextInputFormat.java
給lzo文件加索引的目的是為了讓lzo支持 splitable, 這樣hadoop可以並行處理, 所以這一步很關鍵, 生成的文件后綴.index
注意,對於建立了索引的lzo文件,如果不把inputformat設置為LzoTextInputFormat,會把索引文件也當做是輸入文件。
mapreduce版本的 創建索引的工具 DistributedLzoIndexer
從類名DistributedLzoIndexer可以看出是通過mapreduce分布式程序來建立索引的。
兩個程序運行成功之后,都會在hdfs目錄/hdfs/path/to/下生成一個索引文件file.lzo.index。
如果沒有索引,lzo文件也是可以處理的,mapreduce會根據后綴名“.lzo”來對lzo文件解壓,並且inputformat也不需要特別指定,但是不支持分塊,整個lzo文件只用一個map來處理。
hadoop-lzo包本身提供了建立lzo索引的類,可以在本地運行程序建立索引,也可以運行mapreduce程序建立索引。