sparkR 中的 Groupby 没有给出预期的结果
Groupby in sparkR not giving desired results
我用 mtcars
创建了一个数据框。我按 gear
和 cyl
分组。然后我计算 hp
和 disp
的最大值。 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
我用 mtcars
创建了一个数据框。我按 gear
和 cyl
分组。然后我计算 hp
和 disp
的最大值。 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