日志服务将日志投递到OSS时,支持通过Snappy压缩OSS文件。投递成功后,您可以通过C++ Lib、Java Lib、Python Lib、Linux工具等方式解压OSS文件。
使用C++ Lib解压
-
下载Snappy Lib。
-
使用
Snappy.Uncompress
解压。
使用Java Lib解压
-
选择以下任意一种方式下载Java Lib。
说明
1.1.2.1版本存在Bug ,可能无法解压部分压缩文件。1.1.2.6及以上版本已修复该问题,建议您使用1.1.2.6及以上版本的Java Lib。关于该Bug的更多信息,请参见bad handling of the MAGIC HEADER。
-
手动方式
xerial snappy-java
-
Maven方式
org.xerial.snappy snappy-java 1.0.4.1 jar compile
-
-
使用以下任意一种方法解压。
说明
不支持使用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"))
说明
-
如果您在Windows系统下,使用snappy.uncompress解压出现报错,例如
UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 0: illegal multibyte sequence
,可能是Windows文件系统以BOM开头导致的。建议您使用类Unix系统或者在open函数的encoding中设置正确的文件编码。 -
不支持通过以下命令行工具解压snappy压缩文件,命令行模式下仅支持hadoop模式(hadoop_stream_decompress)与流模式(stream_decompress)。
python -m snappy -d compressed_file.snappy uncompressed_file
-
使用开源PHP工具解压
您可以使用开源的PHP工具解压Snappy文件。
-
下载php-ext-snappy源码。
您也可以执行以下命令行下载php-ext-snappy源码。
git clone --recursive --depth=1 https://github.com/kjdev/php-ext-snappy.git
-
编译源码。
% cd php-ext-snappy % phpize % ./configure % make % make install
-
在php.ini文件中配置扩展格式。
extension=snappy.so
完成以上配置后,就可以参考以下代码压缩和解压snappy格式文件。
$file_path = "test.snappy" ; if (file_exists($file_path)) { $str = file_get_contents($file_path); //将整个文件内容读入到一个字符串中。 $uncompressed = snappy_uncompress($str); echo $uncompressed; }
更多参考
您可以访问GitHub上Snappy的开源项目,获取更多支持。更多信息,请参见开源Snappy。
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/165050.html