我正在使用PySpark(在连接到Spark集群的Jupyter Notebook中)和一些UDF。 UDF将列表作为附加参数,我像这样构造UDF:
my_udf = F.udf(partial(my_normal_fn, list_param=list), StringType())
关于执行功能,一切正常。但我注意到UDF永远不会更新。
澄清一下:当我更新list
时,例如通过更改列表中的元素,UDF不会更新。旧版列表仍然使用旧版本。即使我再次执行整个笔记本。
我必须重新启动Jupyter内核才能使用新版本的列表。哪个真烦人......
有什么想法吗?
答案 0 :(得分:0)
我找到了解决方案。
我的my_normal_fn
确实有以下签名:
def my_normal_fn(x, list_param=[]):
dosomestuffwith_x_and_list_param
将其更改为
def my_normal_fn(x, list_param):
dosomestuffwith_x_and_list_param
诀窍。有关详细信息,请参阅here。
感谢SparkML-Slack频道的用户Drjones78。