Spark应用程序中的作业总数

时间:2016-03-03 12:14:51

标签: scala apache-spark

我已经看到了这个问题How to implement custom job listener/tracker in Spark?并检查了源代码以了解如何获得每个作业的阶段数,但有没有办法以编程方式跟踪在Spark应用中完成的作业的百分比?

我可以通过听众获得已完成作业的数量,但我错过了将要运行的作业总数。

我想跟踪整个应用程序的进度,它会创建很多工作,但我无法在任何地方找到它。

@Edit:我知道有一个REST端点可以获取应用中的所有作业,但是:

  1. 我不想使用REST,而是在应用程序本身中使用它(在AWS EMR / Yarn上运行火花 - 获取地址可能是可行的,但我不想这样做)
  2. REST端点似乎只返回正在运行/已完成/失败的作业,因此不返回作业总数。

1 个答案:

答案 0 :(得分:0)

经过一段时间的源代码之后,我猜有没有办法预先看到有多少工作,因为我找不到Spark会提前做这样分析的地方(作为工作)在每个动作中独立提交Spark从一开始就没有全面了解所有工作。

由于Spark将工作划分为:

,这种方式很有意义
  • 作业 - 只要在驱动程序节点上运行的代码遇到操作(即collect()take()等,就会启动这些作业。并且应该计算一个值并将其返回给驱动程序
  • 阶段 - 由任务的序列组成,在这些序列之间不需要数据随机播放
  • 任务 - 可以在工作节点上并行运行的相同类型的计算

因此,我们需要提前了解单个作业的阶段和任务以创建DAG,但我们不一定需要创建DAG作业,我们可以创建它们"我们去#" 34。

相关问题