GroupedData 的长度“‘GroupedData’类型的对象没有 len()”

Posted

技术标签:

【中文标题】GroupedData 的长度“‘GroupedData’类型的对象没有 len()”【英文标题】:Length of GroupedData "object of type 'GroupedData' has no len()" 【发布时间】:2022-01-01 02:19:03 【问题描述】:

我在计算分组数据的长度时遇到问题:

“GroupedData”类型的对象没有 len()

我在 PySpark 中有以下代码:

gb = df.groupBy('A_1')
l = len(gb)
print(l)

但是我得到了这个错误。如何计算gb 的长度?

这段代码可以用pandas运行:

gb = df.groupby(['A_1'])
l = len(gb)
print(l)

但是在 PySpark 中,我遇到了问题。

【问题讨论】:

Spark 不是 Pandas。您不能使用相同的方法。您可以访问 spark doc here。如果你想将 spark 用作 pandas,可以使用koalas 【参考方案1】:

问题在于len 的使用。您不能将其与 Spark 一起使用。 我想,你想使用count

df = spark.range(10)
print(df.count())
# 10

groupBy 是“部分”步骤。之后没有聚合就不能进行 groupBy 。 如果您只是想计算不同“A_1”的数量,请执行以下操作:

df.select("A_1").distinct().count()

【讨论】:

以上是关于GroupedData 的长度“‘GroupedData’类型的对象没有 len()”的主要内容,如果未能解决你的问题,请参考以下文章

将 pyspark groupedData 转换为 pandas DataFrame

scala - Spark:如何在 groupedData 中获取带有条件的结果集

从 Spark GroupedData 对象中选择随机项

使用无法直接从GroupedData类调用的方法聚合多个列(如“last()”)并将它们重命名为原始名称[duplicate]

以序列作为键参数的 Spark Dataframe groupBy [重复]

如果存在多个值,Apache Pig Group by 和过滤器?