код работает нормально на Zepplin, но не работает с spark-submit после компиляции с sbt - PullRequest
0 голосов
/ 06 июня 2019

Я работаю с временными рядами для прогноза фондового рынка. Мой скрипт Spark отлично работает на zeppelin, но после компиляции моего скрипта с помощью sbt я не получаю желаемых результатов, а просто нулевые значения. У меня также есть вопрос о неразрешенной зависимости для com.cloudera.sparkts.

строка кода, вызывающая pb: ожидаемый результат

val df = spark.createDataFrame(tsRdd.mapSeries { vector => {
val newVec = new org.apache.spark.mllib.linalg.DenseVector(vector.toArray.map(x => if (x.equals(Double.NaN)) 0 else x))
val arimaModel = ARIMA.fitModel(1, 0, 0, newVec)
val forecasted = arimaModel.forecast(newVec, DAYS)
new org.apache.spark.mllib.linalg.DenseVector(forecasted.toArray.slice(forecasted.size - (DAYS + 1), forecasted.size - 1))
}}.toJavaRDD).toDF("lab", "features").withColumn("featuresArr", vecToArray($"features"))

 df.select((col("lab") +: Array("f1", "f2", "f3", "f4", "f5").zipWithIndex.map { case (alias, idx) => col("featuresArr").getItem(idx).as(alias) }): _*).show

Выход:

Я получил только нулевые значения

1 Ответ

0 голосов
/ 17 июня 2019

Некоторые проблемы с зависимостями решаются путем перезагрузки плагинов и обновления зависимостей. Особенно, когда проблема с зависимостями связана с кэшем плюща.

Выполните следующие действия:

sbt reload plugins
sbt update
sbt reload

Если у вас есть проблема, проверьте правильность версии spark / scala, которую вы определили в вашей сборке.

Для нулевых значений я бы начал изучать шаг посредников конвейера данных и попытался понять, что может быть не так.

...