【问题标题】:spark partition strategy comparison between date=dd-mm-yyyy vs yyyy={xxxx}/mm={mm}/dd={xx}date=dd-mm-yyyy vs yyyy={xxxx}/mm={mm}/dd={xx}的spark分区策略比较
【发布时间】: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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • +1 我绝对推荐使用date=yyyy-mm-dd 分区,因为year=yyyy/month=mm/day=dd 分区,我个人损失了很多时间,考虑一下您需要写入查询以检索过去 30 天的过滤条件例如数据
    猜你喜欢
    • 2014-04-30
    • 2020-12-14
    • 2020-02-24
    • 2010-09-22
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多