首页 > 解决方案 > Spark UI - Spark SQL 查询执行

问题描述

我正在使用 Spark SQL API。当我在 spark UI 上看到详细说明查询执行计划的 Spark SQL 部分时,它说它会多次扫描 parquet 阶段,即使我只读取 parquet 一次。有什么合乎逻辑的解释吗?

我还想了解 Hash Aggregate、SortMergeJoin 等不同的操作,并更好地整体了解 Spark UI。

标签: apache-sparkapache-spark-sql

解决方案


如果您正在进行联合或加入,他们可能会迫使您的计划从一开始就“重复”。

由于 spark 不会自动保持中间状态(除非你缓存),它必须多次读取源

就像是

1- df = Read ParquetFile1
2- dfFiltered = df.filter('active=1')
3- dfFiltered.union(df)

该计划可能看起来像: readParquetFIle1 --> union <-- filter <-- readParquetFIle1


推荐阅读