当我在Apache Spark上运行作业时,Web UI会提供类似于此的视图:
虽然这对于我作为开发人员来说非常有用,但我认为阶段描述中的行号对我的支持团队来说并不那么有用。为了使他们的工作更轻松,我希望能够为我的工作的每个阶段以及工作本身提供一个定制的名称,如下所示:
这可以在Spark中完成吗?如果是这样,我该怎么做?
答案 0 :(得分:21)
这就是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
Web UI中的结果。
点击作业以查看可以找到较长通话网站的详细信息,例如callSite.long
。
这是Stages选项卡。
答案 1 :(得分:0)
您可以使用以下API来设置和取消设置舞台名称。 https://spark.apache.org/docs/2.3.0/api/java/org/apache/spark/SparkContext.html#setCallSite-java.lang.String- https://spark.apache.org/docs/2.3.0/api/java/org/apache/spark/SparkContext.html#clearCallSite--
此外,Spark支持应用程序中作业组的概念,可以使用以下API来设置和取消作业组名称。 https://spark.apache.org/docs/2.3.0/api/java/org/apache/spark/SparkContext.html#setJobGroup-java.lang.String-java.lang.String-boolean- https://spark.apache.org/docs/2.3.0/api/java/org/apache/spark/SparkContext.html#clearJobGroup--
也可以使用以下API配置作业组中的作业描述。 https://spark.apache.org/docs/2.3.0/api/java/org/apache/spark/SparkContext.html#setJobDescription-java.lang.String-