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

Wenchen Fan reassigned SPARK-24216:
-----------------------------------

    Assignee: Fangshi Li

> Spark TypedAggregateExpression uses getSimpleName that is not safe in scala
> ---------------------------------------------------------------------------
>
>                 Key: SPARK-24216
>                 URL: https://issues.apache.org/jira/browse/SPARK-24216
>             Project: Spark
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 2.3.0, 2.3.1
>            Reporter: Fangshi Li
>            Assignee: Fangshi Li
>            Priority: Major
>             Fix For: 2.4.0
>
>
> When user create a aggregator object in scala and pass the aggregator to 
> Spark Dataset's agg() method, Spark's will initialize 
> TypedAggregateExpression with the nodeName field as 
> aggregator.getClass.getSimpleName. However, getSimpleName is not safe in 
> scala environment, depending on how user creates the aggregator object. For 
> example, if the aggregator class full qualified name is 
> "com.my.company.MyUtils$myAgg$2$", the getSimpleName will throw 
> java.lang.InternalError "Malformed class name". This has been reported in 
> scalatest 
> [scalatest/scalatest#1044|https://github.com/scalatest/scalatest/pull/1044] 
> and discussed in many scala upstream jiras such as SI-8110, SI-5425.
> To fix this issue, we follow the solution in 
> [scalatest/scalatest#1044|https://github.com/scalatest/scalatest/pull/1044] 
> to add safer version of getSimpleName as a util method, and 
> TypedAggregateExpression will invoke this util method rather than 
> getClass.getSimpleName.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

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

Reply via email to