首页 > 解决方案 > 用于 Python 的 Spark 列函数

问题描述

我已经阅读了一些关于 spark“列函数”的文章。它们似乎是接受列参数并返回列类型的标准 UDF 函数。例如

def removeAllWhitespace(col: Column): Column = {
  regexp_replace(col, "\\s+", "")
}

在其中一篇文章中指出:“UDF 是 Spark 引擎的黑匣子,而接受 Column 参数并返回 Column 的函数不是 Spark 的黑匣子。”

上面的例子是在 Scala 中。可以在具有相同性能优势的 python 中完成相同的事情吗?

标签: apache-spark

解决方案


组合对象pyspark.sql.functions

from pyspark.sql.functions import regexp_replace

def remove_all_whitespace(col):
    return regexp_replace(col, "\\s+", "")

用法:

df = spark.createDataFrame(["fo oo  oo   ooo"], "string")
df.select(remove_all_whitespace("value"))

推荐阅读