Как Spark может избежать многопоточного конфликта при отправке этапа - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь написать программу, которая может работать с расписанием DAG, и у меня возникла проблема, заключающаяся в том, что при двух дочерних успехах одновременно родитель может выполняться повторно.Поэтому я упомянул дизайн спарк, но я не нашел, где спарк имеет дело с этой ситуацией.

/** Submits stage, but first recursively submits any missing parents. */
  private def submitStage(stage: Stage) {
    val jobId = activeJobForStage(stage)
    if (jobId.isDefined) {
      logDebug("submitStage(" + stage + ")")
      if (!waitingStages(stage) && !runningStages(stage) && !failedStages(stage)) {
        val missing = getMissingParentStages(stage).sortBy(_.id)
        logDebug("missing: " + missing)
        if (missing.isEmpty) {
          logInfo("Submitting " + stage + " (" + stage.rdd + "), which has no missing parents")
          submitMissingTasks(stage, jobId.get)
        } else {
          for (parent <- missing) {
            submitStage(parent)
          }
          waitingStages += stage
        }
      }
    } else {
      abortStage(stage, "No active job for stage " + stage.id, None)
    }
  }

Я что-то упустил?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...