在Spark Java中,如何以编程方式确定* active *内核和任务的数量?

时间:2019-04-17 16:10:02

标签: apache-spark

Spark Web UI显示有关内核和任务总数和活动数量的重要信息。如何在Java Spark中以编程方式获取此信息,以便向最终用户显示作业进度?

我确实读过“ append / json /”技巧,可以从母版中提取Web UI页面的JSON版本,这样我就可以得到 total 个内核……

但是有关 active 内核和任务的所有信息似乎都在驱动程序UI页面中。我在驱动程序UI页面上尝试了“ / json /”技巧,它只是将我重定向回HTML页面。

1 个答案:

答案 0 :(得分:1)

好像我们发现了两种不同的方式来显示此信息:

1)从SparkContext检索SparkStatusTracker(谢谢您):

JavaSparkContext javaSparkContext = ...;
JavaSparkStatusTracker javaSparkStatusTracker = javaSparkContext.statusTracker();
for (int stageId : javaSparkStatusTracker.getActiveStageIds()) {
  SparkStageInfo sparkStageInfo = javaSparkStatusTracker.getStageInfo(stageId);
  int numTasks = sparkStageInfo.numTasks();
  int numActiveTasks = sparkStageInfo.numActiveTasks();
  int numFailedTasks = sparkStageInfo.numFailedTasks();
  int numCompletedTasks = sparkStageInfo.numCompletedTasks();
  ...
}

2)查阅可从驱动程序JVM获得的REST API:

https://spark.apache.org/docs/latest/monitoring.html#rest-api