在 PySpark 中重新加载 UDF
Posted
技术标签:
【中文标题】在 PySpark 中重新加载 UDF【英文标题】:UDF reload in PySpark 【发布时间】:2016-10-25 09:24:10 【问题描述】:我正在使用 PySpark(在连接到 Spark 集群的 Jupyter Notebook 内)和一些 UDF。 UDF 将列表作为附加参数,我这样构造 UDF:
my_udf = F.udf(partial(my_normal_fn, list_param=list), StringType())
关于执行功能,一切正常。但我注意到 UDF 从未更新。
澄清一下:当我更新list
时,例如通过更改列表中的元素,UDF 不会更新。仍然使用带有旧列表的旧版本。即使我再次执行整个笔记本。
我必须重新启动 Jupyter 内核才能使用新版本的列表。真是烦人……
有什么想法吗?
【问题讨论】:
【参考方案1】:我找到了解决办法。
我的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。
【讨论】:
以上是关于在 PySpark 中重新加载 UDF的主要内容,如果未能解决你的问题,请参考以下文章
pyspark:在日期和时间上重新采样 pyspark 数据帧