Hadoop发出的本机快照压缩数据无法通过java-snappy版本提取

tnk_peka

当我们在经过一些处理后使用Spark时,我将结果存储到文件中,并使用带有简单代码的简明编解码器:

 data.saveAsTextFile("/data/2014-11-29",classOf[org.apache.hadoop.io.compress.SnappyCodec])

之后,当我使用Spark读取此文件夹文件时,一切都将正常运行!但是今天我尝试在我的PC中使用java snappy(java-snappy 1.1.1.2)解压result文件夹中的文件(此文件是该文件夹中下载到我的PC的文件之一)

Maven的依赖:

<dependency>
    <groupId>org.xerial.snappy</groupId>
    <artifactId>snappy-java</artifactId>
    <version>1.1.1.2</version>
</dependency>

我使用此代码解压缩:

File fileIn = new File("E:\\dt\\part-00000.snappy");
File fileOut = new File("E:\\dt\\adv1417971604684.dat");
FileOutputStream fos = new FileOutputStream(fileOut, true);
byte[] fileBytes = Files.readAllBytes(Paths.get(fileIn.getPath()));
byte[] fileBytesOut = Snappy.uncompress(fileBytes);
fos.write(fileBytesOut);

但是:(我立即得到这个错误:

    java.io.IOException: FAILED_TO_UNCOMPRESS(5)
 at org.xerial.snappy.SnappyNative.throw_error(SnappyNative.java:84)
 at org.xerial.snappy.SnappyNative.rawUncompress(Native Method)
 at org.xerial.snappy.Snappy.rawUncompress(Snappy.java:444)
 at org.xerial.snappy.Snappy.uncompress(Snappy.java:480)
 at org.xerial.snappy.Snappy.uncompress(Snappy.java:456)
 at

在Spark集群中,我们使用:

spark 1.1.0 && hadoop 2.5.1(带有原生hadoop snappy)

这是我运行hadoop checknative -a时的结果

    14/12/09 16:16:57 INFO bzip2.Bzip2Factory: Successfully loaded & initialized native-bzip2    library system-native
14/12/09 16:16:57 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library
Native library checking:
hadoop: true /usr/local/hadoop/hadoop2.5.1/lib/native/libhadoop.so
zlib:   true /lib64/libz.so.1
snappy: true /usr/local/hadoop/hadoop2.5.1/lib/native/libsnappy.so.1
lz4:    true revision:99
bzip2:  true /lib64/libbz2.so.1

我从链接下载并构建了敏捷的本机:

https://code.google.com/p/snappy/,以及以下来源:https : //drive.google.com/file/d/0B0xs9kK-b5nMOWIxWGJhMXd6aGs/edit?usp=sharing

有人请解释这个奇怪的错误!hadoop使用本机快照从使用java-snappy压缩数据时有什么区别吗?

狮子座

我是snappy-java的开发人员。Hadoop的SnappyCodec与Snappy的格式规范不完全相同:https//code.google.com/p/snappy/source/browse/trunk/format_description.txt

Hadoop中的SnappyCodec扩展了此格式以压缩大型数据流。数据被分成多个块(通过BlockCompressionStream),每个块都有一些头文件和压缩数据。要使用Snappy.uncompress方法读取压缩数据,您需要提取每个块并删除其头。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Snappy无法识别15.10中的sideload .snap版本

通过Snappy压缩以ORC格式写入Spark数据帧

Snappy-Java解压缩失败,无法获取有效数据

检查文件是否通过Snappy压缩

PDFBox较新版本以混乱的顺序提取数据

在Go中对Gob数据使用Snappy压缩?

解密Hadoop Snappy文件

无法卸载快照单元,无法在snappy中支持nvidia

通过Java正则表达式提取semver版本字符串的片段

Windows批处理脚本:尝试通过使用管道循环命令结果来提取Java版本

Snappy中的Hive压缩兽人

Zlib:Node.js 无法从 python 中提取压缩数据

无法使用 grep 命令和正则表达式提取 jdk 版本

Java 压缩,Python 解压 - snappy/redis-py-cluster

使用java正则表达式从字符串中提取版本

Android 从 Firebase 数据快照中提取数据

提取不同版本的PDF

sed 版本提取

如何加载在HIVE中压缩的json snappy

具有Snappy压缩功能的Avro

读取Snappy压缩文件时出错

如何使用最新版本的dplyr(1.0),sparklyr(1.4)和SPARK(3.0)/ Hadoop(2.7)从Spark数据框中提取每组的前n行?

数据流:无法初始化类 org.xerial.snappy.Snappy

无法通过SSH连接到Snappy Ubuntu Core

如何以简单的方式从本书的价格数据集数据中提取版本类型,月份和年份?

我无法在我的 gradle 中看到 root 来提取 SHA 密钥用于 google 登录。我的 android 版本是 4.2

无法使用JAVA从网站提取xml数据

如何使用Waterline和Sails.js(版本0.10)从mongo数据库中提取不同的值?

关于java.lang.NoClassDefFoundError:无法初始化类org.xerial.snappy.Snappy