Spark Scala GroupBy - PullRequest
       14

Spark Scala GroupBy

0 голосов
/ 03 января 2019

у меня следующий набор данных:

col1_id,    col2_id,       type

1           t1_1                t1 
1           t1_2                t1
2           t2_2                t2

col1_id & col2_id имеют отношение один ко многим, т.е. несколько col2_id могут иметь один и тот же тип значения col1_id (например, t1), полученный из col2_id

Цель состоит в том, чтобы найти число col1_id, имеющее тип (например, t1, t2 и т. Д.)

Вот что я сейчас делаю,

val df1 = df.select($"col1_id", $"type").groupBy($"col1_id", $"type").count()
df1.drop($"count").groupBy($"type").show() 

это работает нормально ... однако мне интересно, может ли быть лучший способ сделать это.Пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 03 января 2019

Не знаете, почему вы упоминаете col2_id, это не играет здесь никакой роли?

Я ожидаю, что вы хотите сделать, это подсчитать различные col1_id значения для каждого типа?Если да, то сделайте:

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

df
  .groupBy($"type")
  .agg(
    countDistinct($"col1_id")
  )
  .show()
...