Facebook Prophet是否可以通过spark_apply应用于sparklyr

时间:2019-05-08 18:05:51

标签: sparklyr facebook-prophet

我正在尝试测试是否可以使用sparklyr运行先知以对集群中的数据进行预测。但是当我使用spark_apply时,程序卡住了。

在连接到带有spark 2.2.0的yarn-client的edgenode上运行sparklyr。 数据是过去4年中按地区划分的销售额。

计划是创建一个包含所有数据的数据框,并按位置对数据进行分区,然后在每个位置调用先知并获得接下来7天的预测。

在这里,我尝试将数据提取到一个位置并应用先知,但sparklyr卡住了。

library("sparklyr")
library("prophet")
sc <- spark_connect(master = "yarn-client",version = "2.2.0"))
query = "select * from saletable"
df <- sdf_sql(sc,query) %>%
         filter(locationid=="1111") %>% 
         select(date,sales) %>%
         sdf_repartition(partitions=1) %>%
         select(ds=date,y=sales)

## try to predict sales the next 7 days and get the predictions

sparkly_prophet <- function(df){
    m <- prophet::prophet(df)
    future <- prophet::make_future_dataframe(m,periods=7,freq='day')
    forecast <- predict(m,future)
    return (dplyr::select(forecast,yhat) %>% tail(7))
}


## then I run but it stucked

spark_apply(df,sparkly_prophet)

1 个答案:

答案 0 :(得分:0)

使用spark_apply()时,我取得了更好的成功,其中包括对spark_apply()的调用中的函数定义。我不确定为什么会这样,但是将代码重组为

spark_apply(
  df, 
  function(df) {
    m <- prophet::prophet(df)
    future <- prophet::make_future_dataframe(m, periods = 7, freq = "day")
    forecast <- predict(m, future)
    yhat <- dplyr::select(forecast, yhat) 
    return(tail(yhat, 7))
  }
)