gpt4 book ai didi

apache-spark - Spark 谓词下推性能

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

我将 Parquet 文件按日期存储在以下目录中的分区中:

/activity
/date=20180802

我正在使用 Spark 2.2 并且有 400 多个分区。我的理解是谓词下推应该允许我运行如下查询并获得快速结果。
spark.read.parquet(".../activity")
.filter($"date" === "20180802" && $"id" === "58ff800af2")
.show()

但是,上面的查询大约需要 90 秒,而下面的查询大约需要 5 秒。 我做错了什么还是这是预期的行为?
spark.read.parquet(".../activity/date=20180802")
.filter($"id" === "58ff800af2")
.show()

最佳答案

我也注意到了这一点和 talked about it at a Spark Summit presentation .

Spark 执行昂贵的文件列表操作,这确实会减慢速度。 Spark 在列出文件方面非常糟糕。我已经将 Spark 文件列出时间与 AWS CLI 进行了比较,但不知道为什么 Spark 列出文件需要这么长时间。

您应该将“我的理解是谓词下推……”改写为“我的理解是分区过滤器……”。谓词下推过滤是不同的。

这也是an issue with Delta Data lakes . Delta 数据湖实际上更糟,因为您提到的避免文件列表的解决方法不适用于 Delta。

简而言之,您没有做错任何事情,这是预期的行为。您只有 400 个分区,因此不必要的文件列表在您的情况下还不错。想象一下,当您有 20,000 个分区时,这会变得多慢!

关于apache-spark - Spark 谓词下推性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51851827/

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