[
https://issues.apache.org/jira/browse/SPARK-17668?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15626613#comment-15626613
]
koert kuipers commented on SPARK-17668:
---------------------------------------
similar issues with tuples:
{noformat}
val df = Seq((1, (2, 3)), (4, (5, 6))).toDF("x", "y")
val df1 = df.withColumn("z", udf({ y: (Int, Int) => y._1 + y._2
}).apply(col("y")))
df1.printSchema
df1.show
{noformat}
gives:
{noformat}
java.lang.ClassCastException:
org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema cannot be cast
to scala.Tuple2
{noformat}
> Support representing structs with case classes and tuples in spark sql udf
> inputs
> ---------------------------------------------------------------------------------
>
> Key: SPARK-17668
> URL: https://issues.apache.org/jira/browse/SPARK-17668
> Project: Spark
> Issue Type: New Feature
> Components: SQL
> Affects Versions: 2.0.0
> Reporter: koert kuipers
> Priority: Minor
>
> after having gotten used to have case classes represent complex structures in
> Datasets, i am surprised to find out that when i work in DataFrames with udfs
> no such magic exists, and i have to fall back to manipulating Row objects,
> which is error prone and somewhat ugly.
> for example:
> {noformat}
> case class Person(name: String, age: Int)
> val df = Seq((Person("john", 33), 5), (Person("mike", 30), 6)).toDF("person",
> "id")
> val df1 = df.withColumn("person", udf({ (p: Person) => p.copy(age = p.age +
> 1) }).apply(col("person")))
> df1.printSchema
> df1.show
> {noformat}
> leads to:
> {noformat}
> java.lang.ClassCastException:
> org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema cannot be cast
> to Person
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]