繁体   English   中英

我如何将此 UDF 转换为 Pandas UDF

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM