Отчетливое количество записей в кадре данных Spark - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь отобразить различное количество пары разных столбцов в кадре данных spark, а также количество записей после группировки первого столбца.
Поэтому, если у меня были col1, col2 и col3, я хочу сгруппировать col1, а затем отобразить различное количество col2, а также отличное количество col3. Затем я хотел бы отобразить количество записей после того же groupBy col1. И, наконец, сделать все это в одном заявлении агг .. Есть идеи?

1 Ответ

0 голосов
/ 04 мая 2018

Ниже приведен код, который вы ищете

df.groupBy("COL1").agg(countDistinct("COL2"),countDistinct("COL3"),count($"*")).show

======= Проверено ниже ============

scala>  val lst = List(("a","x","d"),("b","D","s"),("ss","kk","ll"),("a","y","e"),("b","c","y"),("a","x","y"));
lst: List[(String, String, String)] = List((a,x,d), (b,D,s), (ss,kk,ll), (a,y,e), (b,c,y), (a,x,y))

scala> val rdd=sc.makeRDD(lst);
rdd: org.apache.spark.rdd.RDD[(String, String, String)] = ParallelCollectionRDD[7] at makeRDD at <console>:26

scala> val df = rdd.toDF("COL1","COL2","COL3");
df: org.apache.spark.sql.DataFrame = [COL1: string, COL2: string ... 1 more field]

scala> df.printSchema
root
 |-- COL1: string (nullable = true)
 |-- COL2: string (nullable = true)
 |-- COL3: string (nullable = true)


scala> df.groupBy("COL1").agg(countDistinct("COL2"),countDistinct("COL3"),count($"*")).show
+----+--------------------+--------------------+--------+
|COL1|count(DISTINCT COL2)|count(DISTINCT COL3)|count(1)|
+----+--------------------+--------------------+--------+
|  ss|                   1|                   1|       1|
|   b|                   2|                   2|       2|
|   a|                   2|                   3|       3|
+----+--------------------+--------------------+--------+


scala>
...