У меня есть задание, где у меня есть схема в 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 и других функций агрегирования, которые я просто пропустил идей.
Кто-нибудь знает, как я это сделаю? Буду очень признателен за любую помощь в этом.