2015-04-23 71 views
0

目前我們在Hadoop中運行MapReduce作業,其輸出壓縮爲SnappyCompression。然後我們將輸出文件移至S3。現在我想通過Java從S3讀取Compressed文件。如何從Java中的S3讀取Snappy壓縮文件

+0

任你用「同樣的方式」作爲Hadoop的或谷歌發現https://github.com/xerial/snappy-java – sodik

+0

我想您所提供的鏈接,但它並沒有說任何東西閱讀文件。它壓縮或解壓縮文件(即使我正在使用該問題面臨一些問題)。在s3中,我們使用getObjectContent讀取文件。有什麼方法可以直接從s3讀取壓縮文件。 – salmanbw

+0

我想從s3複製文件到本地,然後嘗試讀取壓縮文件。但是找不到合適的方法來做到這一點。 – salmanbw

回答

0

我發現答案從S3讀快速壓縮文件。首先,您應該從S3獲取對象內容。然後解壓縮文件。

S3Object s3object = s3Client.getObject(new GetObjectRequest(bucketName,Path)); 
    InputStream inContent = s3object.getObjectContent(); 
    CompressionCodec codec = (CompressionCodec) ReflectionUtils.newInstance(SnappyCodec.class, new Configuration()); 
    InputStream inStream = codec.createInputStream(new BufferedInputStream(inContent)); 
    InputStreamReader inRead = new InputStreamReader(inStream); 
    BufferedReader br = new BufferedReader(inRead); 
    String line=null; 
    while ((line = br.readLine()) != null){ 
     system.out.println(line); 
    }