2016-06-21 269 views

回答

18

countDistinct可能是第一选择:

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

df.agg(countDistinct("some_column")) 

如果速度比精度更重要的,你可以考虑approxCountDistinct

import org.apache.spark.sql.functions.approx_count_distinct 

df.agg(approxCountDistinct("some_column")) 

为了获取值和计数:

df.groupBy("some_column").count() 

在SQL中(spark-sql):

SELECT COUNT(DISTINCT some_column) FROM df 

SELECT approx_count_distinct(some_column) FROM df 
5
df.select("some_column").distinct.count 
+0

这是否告诉你,每一个不同的值怎么算?我认为这会告诉你,你有X值,而不是Val1有A,Val2有B,ValX有C? –

相关问题