首先,我的环境如下
案例1(失败)无法从导入的函数访问广播变量
假设我有两个脚本(a.py和b.py)
from b import do_something
⋮
spark = SparkSession.builder.appName('HelpNeeded').getOrCreate()
data = {"name": "test"}
broadcast_variable = spark.sparkContext.broadcast(data)
df = ⋯
schema = ⋯
df.groupBy(["col_1","col_2"]).applyInPandas(do_something, schema=schema)
def do_something(df):
⋮
data = broadcast_variable.value
⋮
如果我和你一起运行这个
$ zip src.zip b.py
$ spark-submit --deploy-mode client --py-files src.zip a.py
我得到一个错误,上面写着
broadcast_variable not defined
案例2(成功)广播变量可从同一文件中定义的函数访问
def do_something(df):
⋮
data = broadcast_variable.value
⋮
⋮
spark = SparkSession.builder.appName('HelpNeeded').getOrCreate()
data = {"name": "test"}
broadcast_variable = spark.sparkContext.broadcast(data)
df = ⋯
schema = ⋯
df.groupBy(["col_1","col_2"]).applyInPandas(do_something, schema=schema)
然后如果我用
$ spark-submit --deploy-mode clinet a.py
我没有得到任何错误,这意味着正确访问了broadcast_变量
有人知道我错过了什么吗
提前谢谢
目前没有回答
相关问题 更多 >
编程相关推荐