我正在尝试测试是否可以使用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)
答案 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))
}
)