【问题标题】:How to calculate the number of distinct values for all columns in Apache Spark DataFrame [duplicate]如何计算Apache Spark DataFrame中所有列的不同值的数量[重复]
【发布时间】: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
最有效的方法是什么?
【问题讨论】:
标签:
apache-spark
apache-spark-sql
spark-dataframe
【解决方案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|
+---+---+---+