Spark:编写带分区的 Spark 数据帧。什么时候使用它,什么时候应该避免它

问题描述 投票:0回答:1

有以下代码:

sdf.write.partitionBy("day_of_insertion").format("delta").mode("append").save(path)

分区是通过列完成的,但根据该列的基数,我认为它可能或多或少有趣或完全为空。

我知道,如果我们使用“user_id”作为分区列,它将没有任何意义,甚至可能是有害的,因为 user_id 与行一样多。

从数据帧的多少百分比中进行分区比较有意义? 即

如果我有一个包含 10.000 行和 1000 个不同数据的数据集 (即 10%)。在我们的例子中

<attribute_of_partition> = "day_of_insertion"

apache-spark apache-spark-sql partitioning
1个回答
0
投票

答案取决于您的数据和用例。按“day_of_insertion”对数据进行分区的可能用例可能是:

假设您在很长一段时间内有数据登陆和摄取,并且在几周后您想要按日期删除或删除最旧的数据,那么按

day_of_insertion
对数据进行分区将使删除旧数据更加高效无需重写数据的某些部分。

© www.soinside.com 2019 - 2024. All rights reserved.