[英]How can i translate this UDF to Pandas UDF
我遇到了这个函数的一些性能问题,它的目的是如果字符串数组的字符串与val
参数匹配,则返回True
。 我想将其翻译成 Pandas UDF。
def list_contains(val):
# Perfom what ListContains generated
def list_contains_udf(column_list):
for element in column_list:
if element.startswith(val):
return True
return False
return udf(list_contains_udf, BooleanType())
我怎么能做到这一点?
受到@jxc 评论的启发,尝试在 Databricks 的单元格中使用下面的 sql。
%sql
SELECT exists(column_list, element -> substr(element, 1, length(val)) == val)
代码element.startswith(val)
我理解它使用 SQL 是使用substr
取字符串element
的头部 N ( length(val)
) 长度,并且是否等于val
self。
否则,请参考 PySpark 文档的类pyspark.sql.UDFRegistration(sparkSession)
将类似的函数注册为 UDF 以组合使用它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.