Можно ли применить facebook Prophet к sparklyr через spark_apply

Я пытаюсь проверить, могу ли я запустить prophet с помощью sparklyr, чтобы прогнозировать данные в кластере. Но когда я использую spark_apply, программа зависает.

Запуск sparklyr на edgenode, подключенном к пряжи-клиенту с помощью spark 2.2.0. Данные представляют собой продажи по местоположениям за последние 4 года.

План состоит в том, чтобы создать фрейм данных со всеми данными и разделить данные по местоположениям, затем вызвать пророка в каждом месте и получить прогноз на следующие 7 дней.

Здесь я попытался извлечь данные для одного места и применить prophet, но спарклайр застрял.

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)

person tedapham    schedule 08.05.2019    source источник


Ответы (1)


Когда я использовал 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))
  }
)
person zack    schedule 05.06.2019