Искра Java синхронизируется с рабочими узлами — рабочие узлы хотят знать значение глобального счетчика

В любом случае, один рабочий узел может знать текущее состояние других узлов. Допустим, у меня есть JavaRDD кандидатов, и они отсортированы. Теперь я хочу выбрать 10 лучших из них и произвести соответствующие расчеты. Есть ли способ, чтобы рабочие узлы знали, выбраны ли уже 10 лучших кандидатов?

JavaRDD<String> picked = sortedCandidates.map (candidate -> {
      // below are logic not the actual code 
      if number of picked < 10      // HOW TO GET THIS CONDITION CHECK
           then pick this one;
           do corresponding computation;
});

Я думал об использовании аккумулятора, чтобы узнать, сколько кандидатов выбрано. Но затем понять, что значение аккумулятора можно прочитать только в главном узле (как указано в названии, он накапливает результат от рабочих узлов к главному).

Мне интересно, есть ли способ достичь моей цели? Пожалуйста помоги.


person Laodao    schedule 17.09.2020    source источник