【问题标题】:Spark Data Frame write to parquet table - slow at updating partition statsSpark Data Frame 写入 parquet 表 - 更新分区统计信息很慢
【发布时间】:2017-02-13 15:33:41
【问题描述】:

当我在所有任务成功后将数据帧中的数据写入 parquet 表(已分区)时,进程卡在更新分区统计信息。

16/10/05 03:46:13 WARN log: Updating partition stats fast for: 
16/10/05 03:46:14 WARN log: Updated size to 143452576
16/10/05 03:48:30 WARN log: Updating partition stats fast for: 
16/10/05 03:48:31 WARN log: Updated size to 147382813
16/10/05 03:51:02 WARN log: Updating partition stats fast for: 



df.write.format("parquet").mode("overwrite").partitionBy(part1).insertInto(db.tbl)

我的表有 > 400 列和 > 1000 个分区。 如果我们可以优化和加速更新分区统计信息,请告诉我。

【问题讨论】:

    标签: apache-spark hive apache-spark-sql spark-dataframe


    【解决方案1】:

    我觉得这里的问题是超过 400 列的文件的分区太多。每次覆盖 hive 中的表时,都会更新统计信息。在您的情况下,它将尝试更新 1000 个分区的统计信息,并且每个分区都有 > 400 列的数据。

    尝试减少分区数量(使用另一个分区列,或者如果它是日期列,请考虑按月分区),您应该能够看到性能的显着变化。

    【讨论】:

    • 我有同样的问题,我在磁盘上写入时没有指定任何分区列。我不明白正在计算什么统计数据?你能解释更多吗?
    猜你喜欢
    • 2017-01-24
    • 2020-09-15
    • 2017-03-17
    • 2017-05-15
    • 2019-03-02
    • 2018-10-16
    • 2019-04-09
    • 2019-05-07
    • 2018-07-02
    相关资源
    最近更新 更多