как преобразовать список или изменяемый список в набор данных inscala?

#scala #apache-spark #backend

Вопрос:

Если я преобразую MutableList в набор данных, как это:

 Val list = mutableList()
Val dataset = list.toDS()
 

Возникает ошибка:

21/09/29 16:05:25 ИСПОЛНИТЕЛЬ ОШИБКИ: Исключение в задаче 0.0 на этапе 3.0 (TID 3) java.lang.Исключение NullPointerException в org.apache.spark.sql.SQLImplicits.localSeqToDatasetHolder(SQLImplicits.scala:231) в main.ylcx.mallRec.рекомендую$.$anonfun$main 6 долларов(рекомендую.scala:87) в main.ylcx.mallRec.рекомендую$.$anonfun$main 6 долларов США(рекомендую.scala:58) в scala.collection.Iterator.foreach(Iterator.scala:941) в scala.collection.Iterator.foreach$(Iterator.scala:941) в org.apache.spark.Прерыватель.foreach(прерыватель.scala:28) в org.apache.spark.rdd.RDD.$anonfun$foreach$2(RDD.scala:1012) в org.apache.spark.rdd.RDD.$anonfun$на 2$адаптировано(RDD.scala:1012) в org.apache.spark.SparkContext.$anonfun$runJob$5(SparkContext.scala:2236) в org.apache.spark.планировщик.ResultTask.RunTask(ResultTask.scala:90) в org.apache.spark.планировщик.Задача.выполнение(Задача.scala:131) в org.apache.spark.исполнитель.Исполнитель$TaskRunner.$anonfun$выполнить$3(Executor.scala:497) в org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1439) в org.apache.spark.executor.Исполнитель$TaskRunner.run(исполнитель.scala:500) в java.util.concurrent.ThreadPoolExecutor.runWorker(диспетчер потоков.java:1142) в java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) на java.lang.Thread.run(поток.java:748)

Есть ли какой-нибудь другой способ сделать это? Или как решить эту ошибку?

Комментарии:

1. Какую версию spark вы используете ? Каков параметризованный тип изменяемого списка (тип элементов вашего изменяемого списка) ? На Spark 3.1 я не могу понять вашу ошибку. С вашим кодом я получаю ошибку компиляции, и если я исправлю эту ошибку компиляции, добавив тип в конструктор списка, как показано ниже val list = MutableList[String]() , я не получу ошибки и смогу создать пустой dataset набор данных.

2. @VincentDoba спасибо за ваш ответ. Я использую scala 3.1.2. И да. Это нормально во время бега. Но если я отправляю jar в кластер spark, эта ошибка возникает каждый раз. Параметризованный тип-это класс оценки в модели ALS.