Ich verwende einen Datentyp namens Point (x: Double, y: Double). Ich versuche, Spalten _C1 und _C2 als Eingabe für Point() zu verwenden, und dann eine neue Spalte von Punktwerten erstellen, wieSpark 2.1.0 UDF Schematyp nicht unterstützt
val toPoint = udf{(x: Double, y: Double) => Point(x,y)}
folgt Dann rufe ich die Funktion:
val point = data.withColumn("Point", toPoint(watned("c1"),wanted("c2")))
Wenn jedoch ich erkläre die UDF ich die folgende Fehlermeldung erhalten:
java.lang.UnsupportedOperationException: Schema for type com.vividsolutions.jts.geom.Point is not supported
at org.apache.spark.sql.catalyst.ScalaReflection$.schemaFor(ScalaReflection.scala:733)
at org.apache.spark.sql.catalyst.ScalaReflection$$anonfun$schemaFor$2.apply(ScalaReflection.scala:729)
at org.apache.spark.sql.catalyst.ScalaReflection$$anonfun$schemaFor$2.apply(ScalaReflection.scala:728)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
at scala.collection.immutable.List.foreach(List.scala:381)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
at scala.collection.immutable.List.map(List.scala:285)
at org.apache.spark.sql.catalyst.ScalaReflection$.schemaFor(ScalaReflection.scala:728)
at org.apache.spark.sql.catalyst.ScalaReflection$.schemaFor(ScalaReflection.scala:671)
at org.apache.spark.sql.functions$.udf(functions.scala:3084)
... 48 elided
ich richtig diesen Datentyp importiert haben, und verwendet es schon viele Male zuvor. Jetzt, wo ich versuche, es in das Schema meines UDFs aufzunehmen, erkennt es es nicht. Was ist die Methode, andere Typen als der Standard-Int, String, Array enthält, etc ...
Ich bin mit Spark-2.1.0 auf Amazon EMR.
Hier einige verwandte Fragen, die ich verwiesen habe:
How to define schema for custom type in Spark SQL?
Spark UDF error - Schema for type Any is not supported
Was ist 'willed()' in Ihrem Beispiel? – himanshuIIITian
@himanshulllTian Sorry, das ist die Datenbank mit den Spalten c1, c2, c3 usw. – user306603
Haben Sie überlegt, meine Antwort zu akzentieren? –