我必须计算用户发推文的次数,数据在JSON文件中。我尝试了groupByKey
和reduceByKey
,但输出是用户ID和推文本身,而不是推文的数量。
代码:
from pyspark import SparkContext
from pyspark.sql import SQLContext
sc = SparkContext("local", "Twitter")
sqlc = SQLContext(sc)
df = sqlc.read.json("file.json")
tweets = df.select("user.id","text")
users = tweets.rdd.reduceByKey(lambda x,y:x+y)
如何将各自用户的推文计数作为密钥?
答案 0 :(得分:1)
您只需要:
df.groupBy("user.id").count()
此:
tweets.rdd.reduceByKey(lambda x,y:x+y)
只添加第二个元素(可能str
连接结果)。
答案 1 :(得分:0)
实际上我找到了解决方法。希望这有助于某人。
users = tweets.rdd.groupByKey().mapValues(len)