【问题标题】:How can i translate this UDF to Pandas UDF我如何将此 UDF 翻译成 Pandas UDF
【发布时间】:2020-01-23 14:23:36
【问题描述】:

我在使用此函数时遇到了一些性能问题,如果字符串数组的字符串与 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())

我怎样才能做到这一点?

【问题讨论】:

标签: python pandas pyspark databricks


【解决方案1】:

受@jxc 评论启发,尝试在Databricks 的单元格中使用下面的sql。

%sql
SELECT exists(column_list, element -> substr(element, 1, length(val)) == val)

代码element.startswith(val)我理解使用SQL是使用substr获取字符串element的头部N(length(val))长度,并且是否等于valself。

否则,请参考PySpark文档的pyspark.sql.UDFRegistration(sparkSession)类,将类似的函数注册为UDF组合使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2021-05-01
    相关资源
    最近更新 更多