sparkR 中的 Groupby 没有给出预期的结果

Groupby in sparkR not giving desired results

我用 mtcars 创建了一个数据框。我按 gearcyl 分组。然后我计算 hpdisp 的最大值。 group by 出了点问题,因为那里应该有 8 个组。而我只有 6 组。

library(sparkR)
xx=as.DataFrame(sqlContext, data = mtcars)

head(agg(groupBy(xx, "gear", "cyl"), hp = 'max'))
  gear cyl max(hp)
1    3   8     245
2    5   4     113
3    3   4      97
4    4   4     109
5    5   6     175
6    3   6     110

更新 1:

我有另一个问题,在 groupby 的文档中我们有一个例子:

## Examples

## Not run: 
  # Compute the average for all numeric columns grouped by department.
  avg(groupBy(df, "department"))

  # Compute the max age and average salary, grouped by department and gender.
  agg(groupBy(df, "department", "gender"), salary="avg", "age" -> "max")

## End(Not run)

类似地,对于我想出的 mtcars

agg(groupBy(xx, "gear", "cyl"), qsec ="avg", "disp" -> "max")

首先我的理解是我们得到了 disp 的最大值,但代码似乎不起作用。它给出错误如下。第二件事是代码使用 = 代替 ->。是不是有错别字之类的?

unable to find an inherited method for function ‘groupBy’ for signature ‘"function"’

我的 SparkR 版本是 SparkR_1.6.1

您的聚合很好,但您首先添加了一个 'head',它只会显示前 6 行。您需要将其替换为收集。 像这样:

df <- as.DataFrame(mtcars)
gp = agg(groupBy(df, df$gear, df$cyl), hp = 'max')
collect(gp)

请注意,我使用的是 spark 2.0.2