Log Service が Object Storage Service (OSS) に送信するログは、圧縮方法を Snappy に設定できます。 設定すると、C++ ライブラリ、Java ライブラリ、Python ライブラリ、および Linux 用の解凍ツールを使用して、これらのログを解凍できます。
snappy アルゴリズムを使用して OSS に送信するログを圧縮すると、ログが OSS で占有するバケットストレージスペースが小さくなります。 本ページでは、.snappy ファイルを解凍するための以下の方法について説明します。
C++ ライブラリ
C++ ライブラリを Snappy official website からダウンロードし、Snappy.Uncompress メソッドを使用して .snappy ファイルを解凍します。
Java ライブラリ
xerial snappy-java をダウンロードし、Snappy.Uncompress メソッドまたは Snappy.SnappyInputStream メソッドを使用して、.snappy ファイルを解凍します。 SnappyFramedInputStream メソッドはサポートされていません。
<dependency>
<groupId>org.xerial.snappy</groupId>
<artifactId>snappy-java</artifactId>
<version>1.0.4.1</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
-
Snappy.Uncompress
String fileName = "C:\\Downloads\\36_1474212963188600684_4451886.snappy"; RandomAccessFile randomFile = new RandomAccessFile(fileName, "r"); int fileLength = (int) randomFile.length(); randomFile.seek(0); byte[] bytes = new byte[fileLength]; int byteread = randomFile.read(bytes); System.out.println(fileLength); System.out.println(byteread); byte[] uncompressed = Snappy.uncompress(bytes); String result = new String(uncompressed, "UTF-8"); System.out.println(result);
-
Snappy.SnappyInputStream
String fileName = "C:\\Downloads\\36_1474212963188600684_4451886.snappy"; SnappyInputStream sis = new SnappyInputStream(new FileInputStream(fileName)); byte[] buffer = new byte[4096]; int len = 0; while ((len = sis.read(buffer)) ! = -1) { System.out.println(new String(buffer, 0, len)); }
Python ライブラリ
- python-snappy をダウンロードして、インストールします。
- 解凍コードを実行します。
サンプルの解凍コードは次のとおりです。
import snappy compressed = open('/tmp/temp.snappy').read() snappy.uncompress(compressed)
$ python -m snappy -c uncompressed_file compressed_file.snappy
$ python -m snappy -d compressed_file.snappy uncompressed_file
Linux 用の解凍ツール
Linux 環境では、Log Service でも .snappy ファイルを解凍するツールを提供しています。 snappy_tool をクリックしてダウンロードします。
./snappy_tool 03_1453457006548078722_44148.snappy 03_1453457006548078722_44148
compressed.size: 2217186
snappy::Uncompress return: 1
uncompressed.size: 25223660