[ 
https://issues.apache.org/jira/browse/SPARK-44311?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Herman van Hövell resolved SPARK-44311.
---------------------------------------
    Fix Version/s: 3.5.0
       Resolution: Fixed

> UDF should support function taking value classes
> ------------------------------------------------
>
>                 Key: SPARK-44311
>                 URL: https://issues.apache.org/jira/browse/SPARK-44311
>             Project: Spark
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 3.4.1
>            Reporter: Emil Ejbyfeldt
>            Assignee: Emil Ejbyfeldt
>            Priority: Major
>             Fix For: 3.5.0
>
>
> Running the following code in a spark 
> ```
> final case class ValueClass(a: Int) extends AnyVal
> final case class Wrapper(v: ValueClass)
> val f = udf((a: ValueClass) => a.a > 0)
> spark.createDataset(Seq(Wrapper(ValueClass(1)))).filter(f(col("v"))).show()
> ```
> fails with
> ```
> java.lang.ClassCastException: class org.apache.spark.sql.types.IntegerType$ 
> cannot be cast to class org.apache.spark.sql.types.StructType 
> (org.apache.spark.sql.types.IntegerType$ and 
> org.apache.spark.sql.types.StructType are in unnamed module of loader 'app')
>   at 
> org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveEncodersInUDF$$anonfun$apply$42$$anonfun$applyOrElse$218.$anonfun$applyOrElse$220(Analyzer.scala:3241)
>   at scala.Option.map(Option.scala:242)
>   at 
> org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveEncodersInUDF$$anonfun$apply$42$$anonfun$applyOrElse$218.$anonfun$applyOrElse$219(Analyzer.scala:3239)
>   at scala.collection.immutable.List.map(List.scala:246)
>   at scala.collection.immutable.List.map(List.scala:79)
>   at 
> org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveEncodersInUDF$$anonfun$apply$42$$anonfun$applyOrElse$218.applyOrElse(Analyzer.scala:3237)
>   at 
> org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveEncodersInUDF$$anonfun$apply$42$$anonfun$applyOrElse$218.applyOrElse(Analyzer.scala:3234)
>   at 
> org.apache.spark.sql.catalyst.trees.TreeNode.$anonfun$transformUpWithPruning$2(TreeNode.scala:566)
>   at 
> org.apache.spark.sql.catalyst.trees.CurrentOrigin$.withOrigin(TreeNode.scala:104)
>   at 
> org.apache.spark.sql.catalyst.trees.TreeNode.transformUpWithPruning(TreeNode.scala:566)
> ```



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org
For additional commands, e-mail: issues-h...@spark.apache.org

Reply via email to