У меня есть RDD[T]
и предикат T => Boolean
. Как рассчитать, все ли предметы подходят/не подходят для предиката?Spark RDD методы any() и all()?
Конечно, я могу сделать это так:
rdd
.map(predicate)
.reduce(_ && _)
, но это будет иметь полную коллекцию итерацию, что является излишним.
Я попробовал другой подход, который работал хорошо для местных [1], но, казалось, итерация сквозными все на реальный кластер тоже:
rdd
.map(predicate)
.first()
[терпит неудачу с исключением, если не может найти какие-либо из требуется]
Каков канонический способ достижения этого?
В чем разница между вашим решением и моим вариантом (1)? Почему агрегат останавливается на первом «ложном»? –
@ ИльяСмагин. Я вижу, вы сейчас на месте. Нет реального способа прекратить работу в начале искры, вы отправляете задание в кластер и выполняете его. Агрегат - это отличный способ сделать то, что вы хотите. – Noah
Вы хотели бы разместить это отдельно, чтобы я мог отметить это как ответ? –