【发布时间】:2017-09-17 13:52:10
【问题描述】:
我想编写一个 any_lambda 函数来检查 ArrayType 列中的任何元素是否满足 lambda 函数指定的条件。
这是我的代码不起作用:
def any_lambda(f, l):
return any(list(map(f, l)))
spark.udf.register("any_lambda", any_lambda)
source_df = spark.createDataFrame(
[
("jose", [1, 2, 3]),
("li", [4, 5, 6]),
("luisa", [10, 11, 12]),
],
StructType([
StructField("name", StringType(), True),
StructField("nums", ArrayType(StringType(), True), True),
])
)
actual_df = source_df.withColumn(
"any_num_greater_than_5",
any_lambda(lambda n: n > 5, col("nums"))
)
此代码引发TypeError: Column is not iterable。
如何创建一个有效的any_lambda 函数?
【问题讨论】:
标签: apache-spark pyspark