hadoop深入研究:codec

來源:互聯網
上載者:User
關鍵字 nbsp; 通過 深入 來看
codec其實就是coder和decoder兩個單詞的詞頭組成的縮略詞。 CompressionHTTP://www.aliyun.com/zixun/aggregation/29788.html">Codec定義了壓縮和解壓介面, 我們這裡講的codec就是實現了CompressionCodec介面的一些壓縮格式的類,下面是這些類的清單:

使用CompressionCodes解壓縮CompressionCodec有兩個方法可以方便的壓縮和解壓。 壓縮:通過createOutputStream(OutputStream out)方法獲得CompressionOutputStream物件解壓:通過createInputStream(InputStream in) 方法獲得CompressionInputStream物件壓縮的示例代碼[java] view plaincopy package com.sweetop.styhadoop;    import org.apache.hadoop.conf.Configuration;  import org.apache.hadoop.io.IOUtils;  import org.apache.hadoop.io.compress.CompressionCodec;  import  org.apache.hadoop.io.compress.CompressionOutputStream;  import org.apache.hadoop.util.ReflectionUtils ;    /**  * Created with IntelliJ IDEA.  * User:  lastsweetop  * Date: 13-6-25  * Time: 下午10:09  * To  change this template use File | Settings | File Templates.   */  public class StreamCompressor {      public static void main(String[] args) throws Exception {          String  codecClassName = args[0];          Class<?> codecClass =  Class.forName(codecClassName);          Configuration conf = new  Configuration();          CompressionCodec codec = (CompressionCodec)  ReflectionUtils.newInstance(codecClass, conf);            CompressionOutputStream out = codec.createOutputStream(System.out);          IOUtils.copyBytes(System.in, out, 4096, false);          out.finish() ;      }  }  從命令列接受一個CompressionCodec實現類的參數,然後通過ReflectionUtils把具現化這個類, 調用CompressionCodec的介面方法對標準輸出流進行封裝,封裝成一個壓縮流,通過IOUtils類的copyBytes方法把標準輸入流拷貝到壓縮流中,最後調用CompressionCodec的finish方法, 完成壓縮。 再來看下命令列:[plain] view plaincopy echo "Hello lastsweetop" | ~/hadoop/bin/hadoop  com.sweetop.styhadoop.StreamCompressor  org.apache.hadoop.io.compress.GzipCodec | gunzip -   使用GzipCodec類來壓縮「Hello lastsweetop」,然後再通過gunzip工具解壓。 我們來看一下輸出:[plain] view plaincopy [exec] 13/06/26 20:01:53 INFO util.820.html"> NativeCodeLoader: Loaded the native-hadoop library      [exec] 13/06/26  20:01:53 INFO zlib. ZlibFactory: Successfully loaded & initialized native-zlib library      [exec] Hello lastsweetop  使用CompressionCodecFactory解壓縮如果你想讀取一個被壓縮的檔的話, 首先你得先通過副檔名判斷該用哪種codec,可以看下 hadoop深入研究:(七)——壓縮 中得對應關係。 當然有更簡便得辦法,CompressionCodecFactory已經幫你把這件事做了,通過傳入一個Path調用它得getCodec方法,即可獲得相應得codec。 我們來看下代碼[java] view plaincopy package com.sweetop.styhadoop;    import  org.apache.hadoop.conf.Configuration;  import org.apache.hadoop.fs.FileSystem;  import org.apache.hadoop.fs.Path; 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.