首页 > 解决方案 > date=dd-mm-yyyy vs yyyy={xxxx}/mm={mm}/dd={xx}之间的spark分区策略比较

问题描述

如何在日期的火花中选择哪种分区策略。我在数据框中有一列作为 2020-02-19 格式的日期。应该在写入时指定分区列中的日期或从表中的日期创建多个列作为 dd、mm、yyyy 并在重新分区中指定列 yyyy、mm、dd?

如果我指定每个分区策略会出现什么样的问题

标签: apache-sparkpysparkapache-spark-sqldata-partitioning

解决方案


date=yyyy-mm-dd在一个分区或多个分区中没有实际的收益突破year=yyyy/month=mm/day=dd,如果您必须处理过去 10 天将同时提供相同数量的数据。最大的区别在于您查询的方式或维护数据的方式。

使用一个分区,您的生活将很容易编写特定日期的查询。我需要在 3 天前跑步。或者我需要查询从 1 月 1 日到 5 月 1 日的日期范围。拥有一个带有日期的分区可以让您的生活更轻松。

拥有多个分区便于进行月度分析,便于查询整月或整年。但是您将失去查询范围内数据的能力。

除了每种格式的这些功能之外,从性能的角度来看,这不会给您带来任何开销,两种解决方案都会以相同的速度带来数据,因为您不会将数据分解为较小的文件。从易于维护的角度来看,我更喜欢只用一个分区来打破这一天。


推荐阅读