在PySpark中重新加载UDF

时间:2016-10-25 09:24:11

标签: apache-spark pyspark udf

我正在使用PySpark(在连接到Spark集群的Jupyter Notebook中)和一些UDF。 UDF将列表作为附加参数,我像这样构造UDF:

my_udf = F.udf(partial(my_normal_fn, list_param=list), StringType())

关于执行功能,一切正常。但我注意到UDF永远不会更新。 澄清一下:当我更新list时,例如通过更改列表中的元素,UDF不会更新。旧版列表仍然使用旧版本。即使我再次执行整个笔记本。 我必须重新启动Jupyter内核才能使用新版本的列表。哪个真烦人......

有什么想法吗?

1 个答案:

答案 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。