所以我在从hdfs解密一个快速文件时遇到了一些问题。如果我使用 hadoop fs -text
我能够解压缩和输出文件只是文件。但是如果我使用 hadoop fs -copyToLocal
尝试用python snappy解压文件
snapy.uncompresserror:解压缩时出错:输入无效
我的python程序非常简单,如下所示:
import snappy
with open (snappy_file, "r") as input_file:
data = input_file.read()
uncompressed = snappy.uncompress(data)
print uncompressed
这对我来说失败得很惨。所以我尝试了另一个文本,我从 hadoop fs -text
并使用python snappy库对其进行压缩。然后我把它输出到一个文件中。然后我就可以读入这个文件并解压它了。
afaik snappy在两个版本之间向后兼容。我的python代码使用的是最新的snappy版本,我猜hadoop使用的是较旧的snappy版本。这会是个问题吗?还是我还缺什么?
1条答案
按热度按时间zour9fqk1#
好吧,我知道了。结果发现我使用的是原始模式解压一个使用hadoop帧格式压缩的文件。即使我在0.5.1中尝试streamdecompressor,它仍然由于帧错误而失败。python snappy 0.5.1默认为新的snappy帧格式,因此无法解压缩hadoop snappy文件。
原来主版本0.5.2增加了对hadoop帧格式的支持。一旦我构建并导入了它,我就可以轻松地解压缩文件:
现在唯一的问题是,从技术上讲,这还不是一个pip版本,所以我想我将不得不等待或只是使用源代码的构建。