apache-spark - Spark UI - Spark SQL 查询执行
问题描述
我正在使用 Spark SQL API。当我在 spark UI 上看到详细说明查询执行计划的 Spark SQL 部分时,它说它会多次扫描 parquet 阶段,即使我只读取 parquet 一次。有什么合乎逻辑的解释吗?
我还想了解 Hash Aggregate、SortMergeJoin 等不同的操作,并更好地整体了解 Spark UI。
解决方案
如果您正在进行联合或加入,他们可能会迫使您的计划从一开始就“重复”。
由于 spark 不会自动保持中间状态(除非你缓存),它必须多次读取源
就像是
1- df = Read ParquetFile1
2- dfFiltered = df.filter('active=1')
3- dfFiltered.union(df)
该计划可能看起来像: readParquetFIle1 --> union <-- filter <-- readParquetFIle1
推荐阅读
- flutter - 即使安装了包,它也没有显示在 dart 包文件夹中
- c - 如何停止从文件中读取?
- javascript - 了解使用 spyOn 的玩笑测试中的状态
- javascript - 是否有图书馆可以让日历做出反应?
- javascript - 尝试使用 promise.all 和 forEach 在 javascript 中获取多个 api
- javascript - 更新d3中的值时如何在饼图中进行平滑过渡?
- ruby - 无法在 Mac 上解析 zsh 和 oh-my-zsh 的“rbenv init”指令
- flutter - Flutter:我正在尝试使用扩展类包装 Text 小部件,但出现“未定义命名参数‘child’”错误
- python - 让机器人发送不同的嵌入 discord.py
- python - 如何在Python中找到矩阵的行列式?