Apache Spark 据称从 Spark 2.3.0 开始支持 Facebook 的 Zstandard 压缩算法(https://issues.apache.org/jira/browse/SPARK-19112),但我无法实际读取 Zstandard 压缩文件:
$ spark-shell
...
// Short name throws an exception
scala> val events = spark.read.option("compression", "zstd").json("data.zst")
java.lang.IllegalArgumentException: Codec [zstd] is not available. Known codecs are bzip2, deflate, uncompressed, lz4, gzip, snappy, none.
// Codec class can be imported
scala> import org.apache.spark.io.ZStdCompressionCodec
import org.apache.spark.io.ZStdCompressionCodec
// Fully-qualified code class bypasses error, but results in corrupt records
scala> spark.read.option("compression", "org.apache.spark.io.ZStdCompressionCodec").json("data.zst")
res4: org.apache.spark.sql.DataFrame = [_corrupt_record: string]
Run Code Online (Sandbox Code Playgroud)
我需要做什么才能读取这样的文件?
环境是 AWS EMR 5.14.0。
我有一个 16GB 的压缩 zst 文件。我该如何在windows上解压它?我没有内存来处理解压版本,因此需要将其直接写入文件。
我正在尝试通过Windows终端使用zstd v1.4.0解压缩大量压缩文件,然后“ ag”搜索:
zstd -dc -r . | ag -z -i "term"
进行时它给我以下错误:
zstd:错误70:写入错误:管道损坏(无法写入解码块)
我花了数小时寻找解决方案,尝试了该zstd命令的其他选项,但无法解决。
我按照Rakudo 此处构建的说明进行操作。通过类似的阅读here和here,我尝试使用VS-2019在Windows中构建它。
但是,Rakudo在 Windows 中构建时,我收到以下构建警告:
Updating submodules .................................... OK
Configuring native build environment ...................
trying to compile a simple C program ............... YES
did not find libzstd; will not use heap snapshot format version 3
OK
...
src\io\syncfile.c(272): warning C4312: 'type cast': conversion from 'int' to 'HANDLE' of greater size
src\io\syncfile.c(334): warning C4312: 'type cast': conversion from 'int' to 'HANDLE' of greater size
...
src\io\signals.c(115): warning C4068: unknown pragma
src\io\signals.c(116): warning C4068: …Run Code Online (Sandbox Code Playgroud) 我一直在尝试通过我的 Mac 终端下载这个数据集。我知道它很大!https://zenodo.org/record/3606810
我有 tar.zst 文件,当我尝试解压缩(使用zstd -d pol_0616-1119_labeled.tar.zst)时,它会抛出此错误:
1119_labeled.tar.zst : Read error (39) : premature end
我看起来疯狂地寻找解决问题的方法。我有什么明显遗漏的东西吗?预先感谢您的任何帮助。
我正在使用 Pandas 使用以下命令将数据帧转换为 .parquet 文件:
df.to_parquet(file_name, engine='pyarrow', compression='gzip')
Run Code Online (Sandbox Code Playgroud)
我需要使用 zstandard 作为压缩算法,但上面的函数只接受 gzip、snappy 和 brotli。我试过了 有没有办法在这个函数中包含 zstd?如果没有,我怎么能用其他包做到这一点?我尝试使用zstandard,但它似乎只接受类似字节的对象。
有没有一种方法可以使zstd压缩文件像gzip一样具有“ rsyncable”功能--rsyncable?
我尝试过将输入文件分割成固定长度的块,并分别压缩它们,但是没有运气。
关于--rsyncable选项:
在两台计算机之间同步压缩文件时,此选项允许rsync仅传输在存档中更改的文件,而不是整个存档。通常,在对存档中的任何文件进行更改之后,压缩算法可以生成与存档的先前版本不匹配的存档的新版本。在这种情况下,rsync会将存档的整个新版本传输到远程计算机。使用此选项,rsync只能传输更改的文件以及更新更改区域中的存档结构所需的少量元数据。
我已经使用.bz2文件很长时间了。要将.bz2文件解压缩/解压缩到特定文件夹中,我一直在使用以下功能:
destination_folder = 'unpacked/'
def decompress_bz2_to_folder(input_file):
unpackedfile = bz2.BZ2File(input_file)
data = unpackedfile.read()
open(destination_folder, 'wb').write(data)
Run Code Online (Sandbox Code Playgroud)
最近,我获得了带有.xz(不是.tar.xz)和.zst扩展名的文件的列表。我较差的研究技能告诉我,前者是lzma2压缩,后者是压缩Zstandard。
但是,我找不到将这些档案的内容解压缩到一个文件夹中的简单方法(就像我对这些文件所做的那样.bz2)。
我怎么能够:
.xz(lzma2)文件的内容解压缩到文件夹中吗?.zst(Zstandard)文件的内容解压缩到文件夹中吗?重要说明:我正在解压缩非常大的文件,因此,如果该解决方案考虑到任何潜在的Memory Errors,那就太好了。