如何计算spark数据帧的每个不同元素的出现次数

时间:2017-09-11 00:55:00

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

假设我有以下格式的dataframe

-------------------------------
   col1    |  col2    | col3
-------------------------------
value11    | value21  | value31
value12    | value22  | value32
value11    | value22  | value33
value12    | value21  | value33

此处,列col1具有value11, value12作为不同的值。我想要列value11, value12的每个不同值col1的出现次数。

1 个答案:

答案 0 :(得分:1)

您可以groupBy col1 ,然后count

import org.apache.spark.sql.functions.count

df.groupBy("col1").agg(count("col1")).show
+-------+-----------+
|   col1|count(col1)|
+-------+-----------+
|value12|          2|
|value11|          2|
+-------+-----------+

如果您想知道 col1 中有多少个不同的值,您可以使用countDistinct

import org.apache.spark.sql.functions.countDistinct

df.agg(countDistinct("col1").as("n_distinct")).show
+----------+
|n_distinct|
+----------+
|         2|
+----------+