Передачи передаются из JVM драйвера в JVM исполнителя один раз для каждого исполнителя.В результате Var
будет сериализован на драйвере с его текущим a
, затем скопирован и десериализован для всех JVM-исполнителей.Допустим, get
никогда не вызывался на драйвере перед трансляцией.Теперь все исполнители получают копию Var
с a = 1
, и всякий раз, когда они вызывают get
, значение a
в их локальной JVM увеличивается на единицу.Вот и все, ничего не происходит, и изменения a
не будут распространены ни на одного другого исполнителя или драйвера, а копии Var
будут не синхронизированы.
Это неправильноиспользование широковещательной рассылки?
Интересно, зачем вам это делать, поскольку передается только начальное значение a
.Если цель состоит в том, чтобы создать локальные счетчики с общим начальным значением, это технически работает, но есть намного более чистые способы реализовать это.Если цель состоит в том, чтобы вернуть значение обратно драйверу, то да, это неправильное использование, и вместо него следует использовать аккумуляторы .
Кажется, нарушается согласованность широковещательной переменной.
Да, определенно, как объяснено ранее.