如何计算Apache Spark DataFrame中所有列的不同值的数量[重复]
Posted
技术标签:
【中文标题】如何计算Apache Spark DataFrame中所有列的不同值的数量[重复]【英文标题】:How to calculate the number of distinct values for all columns in Apache Spark DataFrame [duplicate] 【发布时间】:2017-09-12 17:43:17 【问题描述】:我想计算 DataFrame 中所有列的不同值的数量。
说,我有一个这样的 DataFrame:
x y z
-----
0 0 0
0 1 1
0 1 2
我想要另一个格式的 DataFrame(或任何其他结构):
col | num
---------
'x' | 1
'y' | 2
'z' | 3
最有效的方法是什么?
【问题讨论】:
【参考方案1】:您可以使用countDistinct
来计算不同的值;要将其应用于所有列,请在列上使用 map
来构造表达式列表,然后将其应用于具有 varargs 语法的 agg
函数:
val exprs = df.columns.map(x => countDistinct(x).as(x))
df.agg(exprs.head, exprs.tail: _*).show
+---+---+---+
| x| y| z|
+---+---+---+
| 1| 2| 3|
+---+---+---+
【讨论】:
以上是关于如何计算Apache Spark DataFrame中所有列的不同值的数量[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Q HPX 与“apache 云计算”(例如 vs spark)如何公平?