计算按另一列分组的记录数?

时间:2019-06-21 23:22:17

标签: pyspark pyspark-sql

我有一个分配,在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 和其他聚合功能的大量试验和错误之后,我只是没主意。

有人知道我会怎么做吗?我真的很感谢任何帮助。

0 个答案:

没有答案