Подсчитать количество записей, сгруппированных по другому столбцу? - PullRequest
0 голосов
/ 22 июня 2019

У меня есть задание, где у меня есть схема в pyspark с именем userdf, которая выглядит следующим образом:

"user_id": string
"friends": comma-delimited list of strings

Я должен выяснить, как написать запрос, который скажет мне, сколько пользователей имеют Х количество друзей. В предыдущей задаче, которую нам дали, я написал запрос, который показывает, сколько друзей у каждого пользователя:

import from pyspark.sql functions as F
userdf.select(F.explode(F.split("friends", ",")).alias("friend"), "user_id").groupBy("user_id").agg(F.count("friend").alias("friend_count")).show()

Вывод этого дает мне следующее:

+--------------------+------------+                                             
|             user_id|friend_count|
+--------------------+------------+
|fm2npkf_1BNUPRZQb...|         152|
|Ufug0ofE20FqP5Rep...|         368|
|32enhKNzuIbOOVgk6...|          30|
|Mu6wz7_d6OBgRqkl4...|        1096|
|tg1Eh5J9iqH5Y0ycb...|         123|
|_7dy8tIPwjjqhrV2p...|          84|
|kItYaO3kwWmPoFYra...|         283|
|E8ClllB8o6jcB4FWu...|         373|
|K3xpTUT83MJttC0We...|          94|
|ZHU-mgW3hUvjjctbX...|         450|
|aYRxt3-Y9rJ2xnenl...|         904|
|diHknuTxYTTUkKQz0...|         305|
|vV666uLw7Xz4xQV7O...|         146|
|ELdsJiQGlX9rLpol4...|         141|
|qjid7bwX4T8DvkMEZ...|          87|
|cgg46H31Q0AZ_kM-y...|          64|
|0b3FXt-EgiwMvS4sc...|        1175|
|TA86D8aHueRu1tIag...|         290|
|XBxmubKfzh3pkDHry...|          89|
|_i9kDyboSVQBlicfT...|         122|
+--------------------+------------+
only showing top 20 rows

Подсказка, которую дал мой профессор, состоит в том, чтобы использовать запрос, который я уже написал, и добавить к нему дополнительные агрегации, но после большого количества проб и ошибок с groupBy, count, countDistinct и других функций агрегирования, которые я просто пропустил идей.

Кто-нибудь знает, как я это сделаю? Буду очень признателен за любую помощь в этом.

...