冒号 (:) 在 pyspark.sql 'pandas_udf()' 函数之前?

Colon (:) before pyspark.sql 'pandas_udf()' function?

在 pyspark.sql 模块的 apply() 文档中,提供的代码在函数 'pandas_udf()' 之前包含一个冒号。这是什么意思,为什么包括在内?我在尝试 运行 该行时遇到语法错误。文档中的代码如下。

这里是link to the documentation.

运行 显然,代码给了我一个语法错误。还尝试删除冒号,但没有成功。

from pyspark.sql.functions import pandas_udf, PandasUDFType
df = spark.createDataFrame(
    [(1, 1.0), (1, 2.0), (2, 3.0), (2, 5.0), (2, 10.0)],
    ("id", "v"))
:pandas_udf("id long, v double", PandasUDFType.GROUPED_MAP)  # doctest: +SKIP
def normalize(pdf):
    v = pdf.v
    return pdf.assign(v=(v - v.mean()) / v.std())`enter code here`
df.groupby("id").apply(normalize).show()  # doctest: +SKIP

这是文档中的一个错误。 pandas_udf 用作装饰器,因此它前面应该有 @ 而不是 :

这个例子应该有效:

from pyspark.sql.functions import pandas_udf, PandasUDFType

# Use pandas_udf to define a Pandas UDF
@pandas_udf('double', PandasUDFType.SCALAR)
# Input/output are both a pandas.Series of doubles

def pandas_plus_one(v):
    return v + 1

df.withColumn('v2', pandas_plus_one(df.v))