如何计算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)如何公平?

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

大数据背景下的计算--Apache Spark

如何成为Apache Spark开发人员?

如何设置 Apache Spark Executor 内存

Spark性能优化案例