apache-spark - Spark UI -> SQL 选项卡不显示所有(旧)阶段
问题描述
我正在执行一个有很多阶段(〜150)的火花(sql)作业。它主要是在内部框架内使用 spark-sql 编写的,该框架使用临时视图和数据框链接 SQL。对于初始中间表写入,我可以在 Spark UI -> SQL 选项卡中看到详细视图。但是对于后面的表格写入,SQL 选项卡只显示以下形式的 UI。
这是什么原因,我可以使用任何参数在 SQL 选项卡中获取详细的图形视图吗?
我的火花版本:2.3
编辑:2020 年 1 月 17 日 我发现了一个 JIRA https://issues.apache.org/jira/browse/SPARK-30064,但我不确定它是否相关,因为它提到了我没有使用的 jdbc 数据源。
解决方案
查看https://spark.apache.org/docs/2.3.4/configuration.html#spark-ui
特别是我怀疑这个问题你可能有
spark.ui.retainedStages
(默认 1000)和/或spark.ui.retainedTasks
(默认 100k)设置得太低。
如果您的作业有 150 个阶段,例如,每个阶段平均有 1000 个任务,那么您的整个作业将有 150*1000 = 150k 个任务,这超出了默认的 100k 限制。因此,您不会在 Spark UI 中看到那些较旧的任务/阶段等。
附言。同样对于具有如此多阶段的 Spark(例如,当您有大量数据帧等以迭代方式链接时),我们经常发现创建检查点有很大帮助。例如,您可以checkpoint
例如每 20-50 次迭代(如果有一个循环创建了巨大的血统;使用最适合您的情况的数字),因此您基本上将具有 150 个阶段的庞大工作分成 20- 50个阶段。Spark Optimizer 可能很难通过 150 个数据帧的 DAG 来创建最佳计划等。
https://jaceklaskowski.gitbooks.io/mastering-spark-sql/spark-sql-checkpointing.html
推荐阅读
- c# - 使用 Microsoft 认知服务在 Unity 应用程序中进行手写识别
- javascript - 如何停止Node sequelize日志记录状态
- r - 如何在 R 中修复我的分组和图例?
- c# - 如何在 Azure 函数中引用 CefSharp?
- batch-file - 如何从文本文件中读取不同的内容
- elasticsearch - 如何在 Elastic Search 1.5 中使用自定义分析器进行不区分大小写的搜索
- java - Spring Batch:从一个源读取数据,但将不同的数据写入 2 个单独的文件
- node.js - 未使用 Sinon 存根
- python - 给定两个 numpy 数组,在数组 A 中找到数组 B 中具有唯一值的项
- mapstruct - 字段名称为“setCode”的对象抛出 => 结果类型中的未知属性“setCode”