Я пытаюсь перебрать набор данных с помощью функции map, возвращая элементы без каких-либо изменений в новую переменную. А затем вызовите метод сбора. Я получаю исключение приведения класса. ClassCastException. что мне не хватает?
def fun() {
val df = Seq(Person("Max", 33),
Person("Adam", 32),
Person("Muller", 62)).toDF()
val encoderPerson = Encoders.product[Person]
val personDS: Dataset[Person] = df.as[Person](encoderPerson)
val newPersonDS = personDS.map { iter2 => iter2}
newPersonDS.collect()
}
case class Person(name: String, age: Int)
java.lang.ClassCastException: com.query.Person не может быть приведен к com.query.Person
на com.query.MyClass $$ anonfun $ 1.apply (MyClass.scala: 42)
в org.apache.spark.sql.catalyst.expressions.GeneratedClass $ GeneratedIteratorForCodegenStage3.mapelements_doConsume_0 $ (неизвестный источник)
в org.apache.spark.sql.catalyst.expressions.GeneratedClass $ GeneratedIteratorForCodegenStage3.deserializetoobject_doConsume_0 $ (неизвестный источник)
at org.apache.spark.sql.catalyst.expressions.GeneratedClass $ GeneratedIteratorForCodegenStage3.agg_doAggregateWithKeysOutput_0 $ (неизвестный источник)
в org.apache.spark.sql.catalyst.expressions.GeneratedClass $ GeneratedIteratorForCodegenStage3.processNext (неизвестный источник)
в org.apache.spark.sql.execution.BufferedRowIterator.hasNext (BufferedRowIterator.java:43)
в org.apache.spark.sql.execution.WholeStageCodegenExec $$ anonfun $ 10 $$ anon $ 1.hasNext (WholeStageCodegenExec.scala: 614)
в org.apache.spark.sql.execution.SparkPlan $$ anonfun $ 2.apply (SparkPlan.scala: 253)
в org.apache.spark.sql.execution.SparkPlan $$ anonfun $ 2.apply (SparkPlan.scala: 247)
в org.apache.spark.rdd.RDD $$ anonfun $ mapPartitionsInternal $ 1 $$ anonfun $ apply $ 25.apply (RDD.scala: 830)
в org.apache.spark.rdd.RDD $$ anonfun $ mapPartitionsInternal $ 1 $$ anonfun $ apply $ 25.apply (RDD.scala: 830)
в org.apache.spark.rdd.MapPartitionsRDD.compute (MapPartitionsRDD.scala: 38)
в org.apache.spark.rdd.RDD.computeOrReadCheckpoint (RDD.scala: 324)
в org.apache.spark.rdd.RDD.iterator (RDD.scala: 288)
в org.apache.spark.scheduler.ResultTask.runTask (ResultTask.scala: 87)
в org.apache.spark.scheduler.Task.run (Task.scala: 109)
в org.apache.spark.executor.Executor $ TaskRunner.run (Executor.scala: 345)
в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142)
в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617)
at java.lang.Thread.run (Thread.java:745)