在 sparkR 中使用聚合函数

Using the agg-function in sparkR

假设我们有一个包含 ID 的数据集 'data',对于每个 ID,我们有很多 'scores'。例如,对于 ID=1,我们有分数 25,41,23,...,33.

对于用户1,我想计算这个用户的总分。在 sparkR 中我这样做

s = filter(data, data$user==1)
ss = agg(s, summa = sum(s$score) )

现在 'ss' 给出了 ID=1 的 'scores' 的总和。我想创建一个数据集,在其中获取所有 ID 的分数总和。

例如,在 R 中我会这样做

newdata=matrix()
for(i in 1: Number of ID's ) {
    s = filter(data, data$user==i)         
newdata[i,] = c(i ,agg(s, summa = sum(s$score)) )
}

但这在 sparkR 中不起作用。它说 "invalid type/length (S4/0) in vector allocation"。有什么好办法吗?

agg 在 groupedData 上完美运行,因此使用

agg(groupBy(data, user), summa = sum(score))

我不确定是否有必要使用 data$score 而不是 score,或者是否遵循文档

agg(groupBy(data,user), score="sum")