如何在Web UI中更改作业/阶段描述?

Joe*_*e C 16 apache-spark

当我在Apache Spark上运行作业时,Web UI提供了类似于此的视图:

在此输入图像描述

虽然这对我作为开发人员来说非常有用,但我认为阶段描述中的行号对我的支持团队来说并不那么有用.为了使他们的工作更轻松,我希望能够为我的工作的每个阶段以及工作本身提供一个定制的名称,如下所示:

在此输入图像描述

这可以在Spark中完成吗?如果是这样,我该怎么办?

Jac*_*ski 24

这就是Spark Core称为本地属性的非常罕见的功能之一.

Spark SQL使用它在单个结构化查询下对不同的Spark作业进行分组,因此您可以使用SQL选项卡轻松导航.

您可以使用SparkContext.setLocalProperty控制本地属性:

设置影响从此线程提交的作业的本地属性,例如Spark fair调度程序池.也可以在此处设置用户定义的属性.这些属性传播到工作任务,可以通过org.apache.spark.TaskContext#getLocalProperty访问它们.

Web UI使用两个本地属性:

  • callSite.short 在"职位"选项卡中(正是您想要的)
  • callSite.long 在"作业详细信息"页

样本用法

scala> sc.setLocalProperty("callSite.short", "callSite.short")

scala> sc.setLocalProperty("callSite.long", "this is callSite.long")

scala> sc.parallelize(0 to 9).count
res2: Long = 10
Run Code Online (Sandbox Code Playgroud)

而Web UI中的结果.

Web UI中的

单击作业以查看可以找到较长呼叫站点的详细信息,即callSite.long.

使用callSite.long在Web UI中创建作业详细信息

这是Stages选项卡.

Web UI中的

  • 对于Spark 2.3.1,此属性称为`spark.job.description`.通过潜入源代码找到了一点. (6认同)
  • 将属性重置为正常状态默认为sc.setLocalProperty("callSite.short",null) (3认同)
  • 因为我正在运行需要多个阶段的工作,所以我需要为每个阶段提供不同的描述.这个答案在每个阶段都有相同的描述,这实际上是我想要去的地方的一步. (2认同)
  • 感谢您接受答案。我认为每个阶段不可能有不同的名称,因为它们不一定能很好地映射到您的业务阶段,而且因为您无法访问任何阶段。不过,您可以影响他们的数量。 (2认同)