You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Spark SQL中获取类似Spark-shell的含阶段与任务的进度条?

在Spark SQL中启用控制台进度条的方法

嘿,刚好知道怎么解决这个问题!Spark Shell里的那个美观进度条其实是控制台进度跟踪功能,默认在交互式模式(比如shell)是开启的,但在批量提交的Spark SQL应用里可能默认关闭了,咱们只需要做几个简单配置就能把它调出来。

核心配置:开启控制台进度跟踪

关键是设置Spark的spark.ui.showConsoleProgress参数为true,它控制着是否在控制台输出阶段和任务的进度信息。

1. 提交应用时配置

如果是用spark-submit提交你的SQL应用jar包,直接在命令里加配置参数:

spark-submit --conf spark.ui.showConsoleProgress=true your-spark-sql-app.jar

2. 在代码中配置

如果你是在Scala/Python代码里创建SparkSession,可以直接在构建器里加入这个配置:

Scala示例

import org.apache.spark.sql.SparkSession

val spark = SparkSession.builder()
  .appName("MySQLProgressApp")
  .config("spark.ui.showConsoleProgress", "true")
  .getOrCreate()

Python示例

from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .appName("MySQLProgressApp") \
    .config("spark.ui.showConsoleProgress", "true") \
    .getOrCreate()

确保日志级别正确

如果配置后还是看不到进度条,大概率是日志级别设置太高了(比如设成了ERROR),进度条的输出属于INFO级别的日志,所以需要把日志级别调整为INFO

Scala代码

spark.sparkContext.setLogLevel("INFO")

Python代码

spark.sparkContext.setLogLevel("INFO")

效果说明

配置完成后,运行你的Spark SQL任务时,控制台就会输出和Spark Shell一样的进度条,比如:

[Stage7:===========> (14174 + 5) / 62500]

这里的数字分别代表:已完成的任务数 + 正在运行的任务数 / 总任务数,进度条的长度直观反映任务完成百分比,同时也能间接看出Executor的分配和运行状态,再也不用频繁刷新Resource Manager UI啦!

内容的提问来源于stack exchange,提问作者user 923227

火山引擎 最新活动