【问题标题】:Spark partitioning of related data into row groupsSpark 将相关数据分区为行组
【发布时间】:2022-01-14 22:32:55
【问题描述】:

使用Apache Spark,我们可以在保存为 Parquet 格式时将数据帧分割成单独的文件。

在the way Parquet files are written 中,每个分区包含多个行组,每个行组都包含与每个组相关的列统计信息(例如,最小/最大值,以及NULL 值的数量)。

现在,在某些情况下,组织 Parquet 文件以使相关数据一起出现在一个或多个行组中似乎是理想的。这将是每个分区文件(构成第一级)内的第二级分区。

这可以使用例如pyarrow,但我们如何使用分布式 SQL 引擎(如 Spark)来做到这一点?

【问题讨论】:

    标签: apache-spark parquet


    【解决方案1】:

    除了分区之外,您还可以对数据进行排序,以将相关数据组合在一组有限的分区中。来自Databricks的声明:

    Z-Ordering 是一种将相关信息放在同一位置的技术 文件集

    (
        df
        .write.option("header", True)
        .orderBy(df.col_1.desc())
        .partitionBy("col_2")
    )
    

    【讨论】:

    • 当然!如此简单,却又如此有效。
    猜你喜欢
    • 2021-02-05
    • 2020-08-24
    • 1970-01-01
    • 2017-11-10
    • 2020-12-06
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多