gpt4 book ai didi

apache-spark - 从 spark 读取 gzipped parquet 文件

转载 作者:行者123 更新时间:2023-12-05 03:51:35 25 4
gpt4 key购买 nike

我有一个正在用 spark 读取的 Parquet 文件:

SparkSession.builder()
.appName("test")
.config("spark.sql.parquet.compression.codec", "gzip")
.read().parquet(resourcePath)

这是用于读取 parquet 文件的代码片段。
当文件未压缩时一切正常,但当我 gzip 时:

gzip fileName.parquet

然后我得到一个 RuntimeException:

is not a Parquet file. expected magic number at tail [80, 65, 82, 49] but found [44, 64, 91, 0]

但是应该支持gzip格式,支持,我这里做错了什么?

最佳答案

Spark 和 Parquet 都支持 Gzip,但不是这样。

Apache Parquet is a free and open-source column-oriented data storage format of the Apache Hadoop ecosystem. [...] It provides efficient data compression and encoding schemes with enhanced performance to handle complex data in bulk.

所以parquet是一种可以使用gzip作为其压缩算法的文件格式,但是如果你自己用gzip压缩一个parquet文件,它就不再是一个parquet文件了。例如,在 spark 中你可以这样做:

val spark = SparkSession.builder
.config("spark.sql.parquet.compression.codec", "gzip")
.getOrCreate
spark.range(10).write.parquet(".../test.parquet")

如果我查看 test.parquet,它是一个包含 gzip 文件的目录:

> cat test.parquet/
part-00000-890dc5e5-ccfe-4e60-877a-79585d444149-c000.gz.parquet
part-00001-890dc5e5-ccfe-4e60-877a-79585d444149-c000.gz.parquet
_SUCCESS

Spark 还支持 gzip 文件。因此,如果我创建一个文本文件并像这样自己 gzip:

> cat file.txt
ab
cd
> gzip file.txt

还有 Spark :

scala> sc.textFile("hdfs:///tmp/file.txt.gz").collect
res6: Array[String] = Array(ab, cd)

关于apache-spark - 从 spark 读取 gzipped parquet 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62791021/

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