java.lang.ClassCastException: org.apache.spark.sql.types.IntegerType$ cannot be cast to org.apache.spark.sql.types.StructType at org.apache.spark.sql.SQLContext.createDataFrame(SQLContext.scala:414) at org.apache.spark.sql.SQLImplicits.rddToDataFrameHolder(SQLImplicits.scala:155) ... 50 elided
3 Réponses :
Un scala int code> ne peut pas être null. Par conséquent, pour créer une étincelle Dataframe contenant une colonne INT avec des valeurs NULL, vous avez deux options:
spark.range(1, 11).select(when('id % 2 ===0, 'id).otherwise(0) as "value")
Vous essayez de cartographier directement les valeurs d'entier sur DataFrame, c'est-à-dire l'erreur possible, c'est pourquoi il donne une erreur de coulée, une erreur de typast. Essayez d'abord de collecter la sortie, puis d'essayer de le mapper sur un fichier de données. p>
Collectez d'abord les valeurs dans un var, en appelant le travail parallèle .Collect () p>
Voir quelque chose comme ça - ce qui aidera à mapper les valeurs aux colonnes de DF que vous essayez de créer. P>
Val Somedf = SEQ ( (8, "BAT"), (64 ans, "souris"), (-27, "cheval") ) .TODF ("nombre", "mot") p>
Merci pour votre réponse mais je ne pense pas que la collecte est nécessaire.
sc.parallelize((1 to 10).map(i => if(i % 2 == 0) Some(i) else None)).toDF() Option Null value is None https://www.scala-lang.org/api/current/scala/Option.html
Hey!! L'une des réponses vous a-t-elle aidé?