Re: «Аккумуляторы не являются поточно-ориентированными по конструкции.».
Я не нашел этого в документации Spark. Вы можете иметь в виду Java аккумуляторы, я полагаю. Потоковая безопасность аккумулятора в вашем приложении драйвера будет зависеть от того, как вы реализовали программу драйвера.
Однако следует отметить, что аккумуляторы могут быть ненадежными. Ненадежность происходит из-за того, что неудавшаяся задача Spark может быть повторена. В таких случаях аккумуляторы не будут давать вам точных значений.
Re: «Более того, операция .value () является дорогой, поскольку она заставляет все рабочие потоки отвечать и отправлять значения обратно в основную программу драйвера ? "
Я не уверен, так ли это, поскольку независимо от того, используете вы аккумуляторы или нет, исполнителям необходимо отправлять сообщения пульса обратно водителю. Более того, данных может быть немного, если сравнивать с такими действиями, как сбор. (Если вы работаете с большими данными). IMO, вызов .value () не должен быть большой проблемой производительности. Кроме того, в пакетной обработке - приложение драйвера, которое вы обычно хотите вызывать .value (), как только ваши исполнители закончили свои задачи