gpt4 book ai didi

python - 解密 Hadoop Snappy 文件

转载 作者:可可西里 更新时间:2023-11-01 14:46:23 25 4
gpt4 key购买 nike

所以我在从 HDFS 解密 snappy 文件时遇到了一些问题。如果我使用 hadoop fs -text 我能够解压缩并输出文件只是文件。但是,如果我使用 hadoop fs -copyToLocal 并尝试使用 python-snappy 解压缩文件,我会得到

snappy.UncompressError: Error while decompressing: invalid input

我的 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 版本。这可能是个问题吗?还是我还缺少其他东西?

最佳答案

好吧,我想通了。事实证明,我使用的是对使用 hadoop 的帧格式压缩的文件的原始模式解压缩。即使我在 0.5.1 中尝试使用 StreamDecompressor,它仍然由于帧错误而失败。 python-snappy 0.5.1 默认为新的 snappy framing format因此无法解压缩 hadoop snappy 文件。

原来主版本0.5.2已经加入了对hadoop framing格式的支持。一旦我构建并导入它,我就能够轻松解压缩文件:

with open (snappy_file, "r") as input_file:
data = input_file.read()
decompressor = snappy.hadoop_snappy.StreamDecompressor()
uncompressed = decompressor.decompress(data)

现在唯一的问题是这在技术上还不是 pip 版本,所以我想我将不得不等待或直接使用源代码构建。

关于python - 解密 Hadoop Snappy 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48016126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com