как избежать сообщения об ошибке java.lang.ClassCastException spark sql 2.3.1 - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть несколько строк кода, которые выполняют предварительную обработку из набора данных:

val clean_data = resultDf.na.replace("verkehrsstatus", Map("aktuell nicht ermittelbar" -> "normales Verkehrsaufkommen"))

val datawithudf = clean_data.withColumn("state", udfState()($"verkehrsstatus"))
val finaldata = datawithudf.select($"auswertezeit", $"strecke_id", $"state", $"geschwindigkeit", $"coordinates").withColumnRenamed("state", "verkehrsstatus")
finaldata.printSchema()
finaldata.take(2).foreach(println)

Когда я хочу отобразить несколько примеров записей из окончательного кадра данных, я получаю это сообщение об ошибке:

WARN scheduler.TaskSetManager: Потерянная задача 0.0 на этапе 2.0 (TID 2, 192.168.56.102, исполнитель 0): java.lang.ClassCastException: невозможно назначить экземпляр scala.collection.immutable.List $ SerializationProxy для поля org.apache.spark.rdd.RDD.org $ apache $ spark $ rdd $ RDD $$ dependencies_ типа scala.collection.Seq в экземпляре org.apache.spark.rdd.MapPartitionsRDD в java.io.ObjectStreamClass $ FieldReflector.setObjFieldValues ​​(ObjectStreamClass.java: 2287) в java.io.ObjectStreamClass.setObjFieldValues ​​(ObjectStreamClass.java:1417) в java.io.ObjectInputStream.defaultReadFields (ObjectInputStream.java:2293) в java.io.ObjectInputStream.readS22D11D ()java.io.ObjectInputStream.readOrdinaryObject (ObjectInputStream.java:2069) в java.io.ObjectInputStream.readObject0 (ObjectInputStream.java:1573) в java.io.ObjectInputStream.defaultReadFields (ObjectInputStream.java:2287) в java.io.ObjectInputStream.readSerialData (ObjectInputStream.java:2211) в java.io.ObjectInputStream.readjPointOputStream.readjrdOinaryO20: 20) в java.io.ObjectInputStream.readObject0 (ObjectInputStream.java:1573) в java.io.ObjectInputStream.readObject (ObjectInputStream.java:431) в scala.collection.immutable.List $ SerializationProxy.readObject (List.scala 479):at sun.reflect.NativeMethodAccessorImpl.invoke0 (родной метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.intaf.jhof.jj.invoke (Method.java:498) в java.io.ObjectStreamClass.invokeReadObject (ObjectStreamClass.java:1170) в java.io.ObjectInputStream.readSerialData (ObjectInputStream.java:2178) в java.io.ObjectInputStream.Oject.putStream.readJava: 2069) на java.io.ObjectInputStream.readObject0 (ObjectInputStream.java:1573) в java.io.ObjectInputStream.defaultReadFields (ObjectInputStream.java:2287) в java.io.ObjectInputStream.readSerialData (ObjectInputStream.java:2211) в jjectInputOream.ject.java: 2069) в java.io.ObjectInputStream.readObject0 (ObjectInputStream.java:1573) в java.io.ObjectInputStream.defaultReadFields (ObjectInputStream.java:2287) в java.io.ObjectInputStream.readSerialData.ava:putв java.io.ObjectInputStream.readOrdinaryObject (ObjectInputStream.java:2069) в java.io.ObjectInputStream.readObject0 (ObjectInputStream.java:1573) в java.io.ObjectInputStream.readObject (ObjectInputStream.java.ap в).spark.serializer.JavaDeserializationStream.readObject (JavaSerializer.scala: 75) по адресу org.apache.spark.serializer.JavaSerializerInstance.deserialize (JavaSerializer.scala: 114) по адресу org.apache.spark.scheduler.ResultTask.runTask (Resas.ask.runTask).80) на 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:1149) в Java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:624) в java.lang.Thread.run (Thread.java:748)

...