sparklyr - facebook Prophet 可以通过 spark_apply 应用于 sparklyr
问题描述
我正在尝试测试是否可以使用 sparklyr 运行先知来预测集群中的数据。但是当我使用 spark_apply 时,程序卡住了。
在连接到带有 spark 2.2.0 的纱线客户端的边缘节点上运行 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 gets stuck
spark_apply(df,sparkly_prophet)
解决方案
当我使用. 时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))
}
)
推荐阅读
- windows - 如何在 Windows git-bash 控制台下运行批处理文件?
- python - Django rest 框架的 StringRelatedField 正在抛出 KeyError
- r - ggplot dotplot 为每个人显示一个点
- apache-kafka - 如何在 Kafka 代理上代理 Apache Kafka 生产者请求,并重定向到单独的 Kafka 集群?
- javascript - 如何将此 if else 转换为 switch case
- sql - 如何修复 SQL Server 代理作业中的 SSIS 脚本任务调用错误?
- javascript - 在对象日寻找共性
- c++ - 如何在 C++ 中制作堆栈列表?
- javascript - 使用反应钩子访问 ComponentWillUnmount 中的道具
- reactjs - 使用下拉列表中的选定值显示更改时正确的组件?