【发布时间】:2021-01-11 16:38:12
【问题描述】:
我有一个包含大量重复值的 DataFrame。它的汇总,不同的计数如下所示
> df.groupby('fruits').count().sort(F.desc('count')).show()
| fruits | count |
| ----------- | ----------- |
| [Apples] | 123 |
| [] | 344 |
| [Apples, plum]| 444 |
我的目标是过滤值为[Apples] 或[] 的所有行。
令人惊讶的是,以下内容适用于非空数组,但对于空数组则无效
import pyspark.sql.types as T
is_apples = F.udf(lambda arr: arr == ['Apples'], T.BooleanType())
df.filter(is_apples(df.fruits).count() # WORKS! shows 123 correctly.
is_empty = F.udf(lambda arr: arr == [], T.BooleanType())
df.filter(is_empty(df.fruits).count() # Doesn't work! Should show 344 but shows zero.
知道我做错了什么吗?
【问题讨论】:
标签: python apache-spark pyspark apache-spark-sql