统计sparkDataframe中所有列(300列)的每个不同值的出现次数

yhuiod9q  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(949)

我有一个300列的sparkDataframe,每列有10个不同的值。我需要计算所有300列的不同值的出现次数。

--------------------------------------------------------
     col1    |  col2    | col3 ............col299   | col 300
  -------------------------------------------------------
  value11    | value21  | value31       | value300  | value 301
  value12    | value22  | value32       | value300  | value 301
  value11    | value22  | value33       | value301  | value 302
  value12    | value21  | value33       | value301  | value 302

如果单列我用下面的代码计算

import org.apache.spark.sql.functions.count
df.groupBy("col1").agg(count("col1")).show

但是如何有效地计算300列。请帮帮我!

x33g5p2x

x33g5p2x1#

你可以很容易地做到下面提到的
首先收集所有列名和转换作为键值。就像下面一样 val exprs = df.columns.map((_ -> "approx_count_distinct")).toMap 那么简单 df.groupBy("col1").agg(exprs) 将为所有列提供不同的值。
参考文献:https://spark.apache.org/docs/2.3.1/api/sql/index.html#approx_count_distinct

相关问题