假设我在python中有一个全局公共对象-
class A:
dict1 = {}
然后我在pyspark UDF的代码中使用它作为-
在“'main''的某处更新A.dict1
def someFunc():
A.dict1["key1"] = some_value
对执行者使用.dict1
def udfFunc():
val = A.dict1["key1"]
//Do python operations on val..
在pyspark上下文中注册并使用udfFunc。 操作顺序-
1) create spark context (cluster mode)
2) load input data from hdfs/s3 etc..
3) someFunc()
4) DataFrame operations using udfFunc()
executor如何获得A.dict1的更新值而不是{}
我知道这是可行的,但是我试图理解spark中如何解决这个问题的机制(当我显式地不使用Broadcast变量并且这个变量是可变的时)。AFAIK,required data,code,env在创建时发送给每个执行器,之后什么都没有,因此混淆了它的工作原理
目前没有回答
相关问题 更多 >
编程相关推荐