我有一个分配,在pyspark中有一个名为userdf的架构,如下所示:
"user_id": string
"friends": comma-delimited list of strings
我应该弄清楚如何编写一个查询,该查询告诉我有X个朋友的用户数量。在给出的上一个问题中,我编写了一个查询,显示每个用户有多少个朋友:
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 和其他聚合功能的大量试验和错误之后,我只是没主意。
有人知道我会怎么做吗?我真的很感谢任何帮助。