Apache spark 如何在Java中获得部署到Thread的Spark应用程序的applicationId?

Apache spark 如何在Java中获得部署到Thread的Spark应用程序的applicationId?,apache-spark,Apache Spark,在Scala的例子中,我们可以使用SparkContext.applicationId,但我无法找到任何方法使用Spark的JavaAPI来实现这一点 使用SparkConf.getAppId()会导致NoTouchElementException:spark.app.id 是否有其他可以使用的唯一Id 我的用例:我希望Spark作业在上一个作业的输出已经存在的情况下不会失败,并且希望避免删除上一个作业的输出并避免使用随机UUID您可以使用SparkContext.applicationId:

在Scala的例子中,我们可以使用
SparkContext.applicationId
,但我无法找到任何方法使用Spark的JavaAPI来实现这一点

使用
SparkConf.getAppId()
会导致NoTouchElementException:spark.app.id

是否有其他可以使用的唯一Id


我的用例:我希望Spark作业在上一个作业的输出已经存在的情况下不会失败,并且希望避免删除上一个作业的输出并避免使用随机UUID

您可以使用
SparkContext.applicationId

JavaSparkContext jsc = ...;
jsc.sc.applicationId;
Java代码

System.out.println("appid = " + spark.sparkContext().applicationId());
结果

appid = app-20171023065927-0026

谢谢,有没有办法获得重试次数?我猜applicationId在retry的情况下是相同的。当您有应用程序id时,您可以使用restapi(),但我不知道是否还有其他方法。