Как (изменяемые) глобальные переменные разрешаются в spark / pyspark без использования переменной Broadcast? - PullRequest
0 голосов
/ 26 марта 2019

говорят, что у меня есть общий глобальный объект в python-

class A:
    dict1 = {}

Затем я использую его в коде в pyspark UDF as-

Обновите A.dict1 где-нибудь в '' ' main ' '' ...

def someFunc():
    A.dict1["key1"] = some_value

Использовать A.dict1 для исполнителя

def udfFunc():
    val = A.dict1["key1"]
    //Do python operations on val..

Зарегистрируйтесь и используйте udfFunc в контексте pyspark. Последовательность операций -

1) create spark context (cluster mode)
2) load input data from hdfs/s3 etc..
3) someFunc()
4) DataFrame operations using udfFunc() 

Как исполнитель получает обновленное значение A.dict1, а не {}?

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

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