Я использую Spark 1.6.2.
Мне нужно найти максимальное количество для каждой группы.
val myData = Seq(("aa1", "GROUP_A", "10"),("aa1","GROUP_A", "12"),("aa2","GROUP_A", "12"),("aa3", "GROUP_B", "14"),("aa3","GROUP_B", "11"),("aa3","GROUP_B","12" ),("aa2", "GROUP_B", "12"))
val df = sc.parallelize(myData).toDF("id","type","activity")
Давайте сначала подсчитаем количество наблюдений на группу:
df.groupBy("type","id").count.show
+-------+---+-----+
| type| id|count|
+-------+---+-----+
|GROUP_A|aa1| 2|
|GROUP_A|aa2| 1|
|GROUP_B|aa2| 1|
|GROUP_B|aa3| 3|
+-------+---+-----+
Это ожидаемый результат:
+--------+----+-----+
|type | id|count|
+----+--------+-----+
| GROUP_A| aa1| 2|
| GROUP_B| aa3| 3|
+--------+----+-----+
Я пробовал это, но это не работает:
df.groupBy("type","id").count.filter("count = 'max'").show
A
и 14 для группыB
, не так ли? И какойid
вы ожидаете увидеть - тот, который соответствует записи с максимальнымcount
? Просьба уточнить. - person Tzach Zohar   schedule 11.05.2017count
на группу. Пожалуйста, смотрите мою обновленную тему. Я объяснил это шаг за шагом. Чтобы избежать путаницы, я переименовал начальные столбцы в.toDF("id","type","activity")
. - person Dinosaurius   schedule 11.05.2017