日志服务将日志投递到OSS时,支持通过Snappy压缩OSS文件。投递成功后,您可以通过C++ Lib、Java Lib、Python Lib、Linux工具等方式解压OSS文件。
使用Java Lib解压
- 选择以下任意一种方式下载Java Lib。
- 使用以下任意一种方法解压。
说明 不支持使用SnappyFramedInputStream。
- Snappy.Uncompress
示例代码如下:
String fileName = "C:\\我的下载\\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:\\我的下载\\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 Lib解压
- 下载Python Lib。
- 使用snappy.uncompress解压。
- Python 2示例代码如下:
import snappy
compressed = open('/tmp/temp.snappy').read()
snappy.uncompress(compressed)
- Python 3示例代码如下:
import snappy
compressed = open('/tmp/temp.snappy','rb').read()
print(snappy.uncompress(compressed).decode(encoding='utf-8',errors="ignore"))
使用Linux工具解压
针对Linux环境,日志服务提供可以解压Snappy文件的工具。
- 下载snappy_tool。
- 执行以下命令解压。
请根据实际情况替换
03_1453457006548078722_44148.snappy和
03_1453457006548078722_44148。
./snappy_tool 03_1453457006548078722_44148.snappy 03_1453457006548078722_44148
返回结果示例:
compressed.size: 2217186
snappy::Uncompress return: 1
uncompressed.size: 25223660