如何在火花数据帧上使用sparklyr获得与R数据帧上的dplyr相同的结果?

时间:2017-05-24 15:40:07

标签: r apache-spark dplyr sparklyr broom

下面的代码为两组中每一组的六个独立变量集合计算的三个因变量中的每一个计算一组回归系数,并且工作正常。

library(tidyverse)
library(broom)
n  <- 20
df4  <- data.frame(groupingvar= sample(1:2, size = n, replace = TRUE),
                   y1 = rnorm(n,10,1), y2=rnorm(n,100,10), y3=rnorm(n,1000,100),
                   x1=  rnorm(n,10,1), x2=rnorm(n,10,1), x3=rnorm(n,10,1),
                   x4=rnorm(n,10,1), x5=rnorm(n,10,1), x6=rnorm(n,10,1))
df4 <- arrange(df4,groupingvar)

regs <- df4 %>% group_by(groupingvar) %>%
  do(fit = lm(cbind(y1,y2,y3) ~ . -groupingvar, data = .))
coeffs <- tidy(regs, fit)

我想使用spark数据帧而不是R数据帧来复制相同的逻辑。例如,类似于:

library(sparklyr)
sc <- spark_connect(master = "local", version = "2.0.0")
sparkdf4ref <- sdf_copy_to(sc, df4, "sparkdf4", overwrite=T)

sparkdf4refregs <- sparkdf4ref %>% group_by(groupingvar) %>%
  do(sparkfit = lm(cbind(y1,y2,y3) ~ . -groupingvar, data = .))
coeffs <- tidy(sparkdf4refregs, sparkfit)

此代码失败主要是因为我需要使用'ml_linear_regression'而不是'lm',但即使进行替换也会失败。如果我保留'ml_linear_regression',但删除cbind()并保留一个依赖变量,则计算一些系数,尽管broom :: tidy无法获取系数。

有没有办法在sparklyr框架中生成此结果,或者在需要时使用其他方法?

0 个答案:

没有答案