这个问题讨论了如何链接自定义 PySpark 2 转换。
DataFrame #transform 方法已添加到 PySpark 3 API。
此代码片段显示了一个不带参数且按预期工作的自定义转换,以及另一个带参数但不工作的自定义转换。
from pyspark.sql.functions import col, lit
df = spark.createDataFrame([(1, 1.0), (2, 2.)], ["int", "float"])
def with_funny(word):
def inner(df):
return df.withColumn("funny", lit(word))
return inner
def cast_all_to_int(input_df):
return input_df.select([col(col_name).cast("int") for col_name in input_df.columns])
df.transform(with_funny("bumfuzzle")).transform(cast_all_to_int).show()
这是输出的内容:
+---+-----+-----+
|int|float|funny|
+---+-----+-----+
| 1| 1| null|
| 2| 2| null|
+---+-----+-----+
应该如何定义该with_funny()
方法以输出 PySpark 3 API 的值?