如何计算Apache Spark DataFrame中所有列的不同值的数量

时间:2017-09-12 17:43:18

标签: apache-spark apache-spark-sql spark-dataframe

我想计算DataFrame中所有列的不同值的数量。

说,我有一个像这样的DataFrame:

vh

我想要另一种格式的DataFrame(或任何其他结构):

x y z
-----
0 0 0
0 1 1
0 1 2

最有效的方法是什么?

1 个答案:

答案 0 :(得分: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|
+---+---+---+