edf.select("x").distinct.show()
显示x
DataFrame的edf
列中显示的不同值。
是否有一种有效的方法可以显示这些不同值在数据框中出现的次数? (计算每个不同的值)
答案 0 :(得分:35)
countDistinct
可能是首选:
import org.apache.spark.sql.functions.countDistinct
df.agg(countDistinct("some_column"))
如果速度比精确度更重要,您可以考虑approx_count_distinct
(Spark 1.x中的approxCountDistinct
):
import org.apache.spark.sql.functions.approx_count_distinct
df.agg(approx_count_distinct("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
答案 1 :(得分:1)
df.select("some_column").distinct.count
答案 2 :(得分:1)
导入org.apache.spark.sql.functions.countDistinct df.groupBy(“ a”)。agg(countDistinct(“ s”))。collect()
答案 3 :(得分:1)
另一个不求助于sql函数的选项
df.groupBy('your_column_name').count().show()
show 将打印不同的值及其出现。没有显示的结果将是一个数据框。
答案 4 :(得分:0)
如果您使用的是Java,import org.apache.spark.sql.functions.countDistinct;
将给出一个错误:
The import org.apache.spark.sql.functions.countDistinct cannot be resolved
要在Java中使用countDistinct
,请使用以下格式:
import org.apache.spark.sql.functions.*;
import org.apache.spark.sql.*;
import org.apache.spark.sql.types.*;
df.agg(functions.countDistinct("some_column"));
答案 5 :(得分:0)