【发布时间】:2020-06-21 06:55:37
【问题描述】:
如何选择 spark on dates 中的分区策略。我在数据框中有一列作为 2020-02-19 格式的日期。写入时应在分区列中指定日期,或从表中的日期创建多个列为dd、mm、yyyy,并在重新分区中指定列yyyy、mm、dd?
如果我指定每个分区策略会出现什么样的问题
【问题讨论】:
标签: apache-spark pyspark apache-spark-sql data-partitioning
如何选择 spark on dates 中的分区策略。我在数据框中有一列作为 2020-02-19 格式的日期。写入时应在分区列中指定日期,或从表中的日期创建多个列为dd、mm、yyyy,并在重新分区中指定列yyyy、mm、dd?
如果我指定每个分区策略会出现什么样的问题
【问题讨论】:
标签: apache-spark pyspark apache-spark-sql data-partitioning
在一个分区date=yyyy-mm-dd 或多个分区year=yyyy/month=mm/day=dd 中没有实际的突破,如果您必须处理过去10 天将同时提供相同数量的数据。最大的区别在于您查询的方式或维护数据的方式。
使用一个分区,您可以轻松编写特定日期的查询。我需要在 3 天前跑步。或者我需要查询从 1 月 1 日到 5 月 1 日的日期范围。拥有一个带有日期的分区会让您的生活更轻松。
拥有多个分区便于进行月度分析,方便查询整月或整年。但是您将失去查询范围内数据的能力。
除了每种格式的这些功能之外,从性能角度来看,这不会给您带来任何开销,两种解决方案都会以相同的速度提供数据,因为您不会将数据分解为较小的文件。从易于维护的角度来看,我更喜欢只用一个分区来打破一天。
【讨论】:
date=yyyy-mm-dd 分区,因为year=yyyy/month=mm/day=dd 分区,我个人损失了很多时间,考虑一下您需要写入查询以检索过去 30 天的过滤条件例如数据