Apache spark 何时为Pyspark中的广播调用“.value”?
以下哪一项是次优的Apache spark 何时为Pyspark中的广播调用“.value”?,apache-spark,pyspark,Apache Spark,Pyspark,以下哪一项是次优的 ## First version ## def myfunc(val, listparam): return val in listparam.value # .value in function mylist_bc = sc.broadcast(mylist) rdd.map(lambda val:myfunc(val, mylist_bc)) ## Second version ## def myfu
## First version ##
def myfunc(val, listparam):
return val in listparam.value # .value in function
mylist_bc = sc.broadcast(mylist)
rdd.map(lambda val:myfunc(val, mylist_bc))
## Second version ##
def myfunc(val, listparam):
return val in listparam
mylist_bc = sc.broadcast(mylist)
rdd.map(lambda val:myfunc(val, mylist_bc.value)) # .value outside function
如果第二个版本的函数不知道我使用的是广播值,那么可以使用第二个版本进行广播吗?我想它可能会干扰广播。
创建广播变量后,应该在集群上运行的任何函数中使用它而不是值v,这样v就不会被多次发送到节点
我会使用选项#1—您知道执行器将使用广播变量
如果将在驱动程序上计算广播变量的值,并将其作为常规变量发送给执行器,则选项#2可能有问题