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

ASF GitHub Bot updated SPARK-53790:
-----------------------------------
    Labels: pull-request-available  (was: )

> arrow encoder is unable to handle Beans with instantiated generics
> ------------------------------------------------------------------
>
>                 Key: SPARK-53790
>                 URL: https://issues.apache.org/jira/browse/SPARK-53790
>             Project: Spark
>          Issue Type: Bug
>          Components: Connect
>    Affects Versions: 4.1.0
>            Reporter: Steven Aerts
>            Priority: Major
>              Labels: pull-request-available
>
> We found a bug in the arrow encoder/decoder for spark connect which is unable 
> to handle beans with instantiated generics.  Like:
> ```
> class JavaBeanWithGenerics[T] {
>   @BeanProperty var value: T = _
> }
> class JavaBeanWithGenericsWrapper {
>   @BeanProperty var value: JavaBeanWithGenerics[String] = _
> }
> ...
> val encoder = 
> JavaTypeInference.encoderFor(classOf[JavaBeanWithGenericsWrapper])
> ```
> Which results in the following error when the above encoder is used in 
> connect:
> ```
> java.lang.NoSuchMethodException: no such method: 
> JavaBeanWithGenerics.getValue()String/invokeVirtual
> at 
> java.base/java.lang.invoke.MemberName.makeAccessException(MemberName.java:915)
> at 
> java.base/java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:994)
> at 
> java.base/java.lang.invoke.MethodHandles$Lookup.resolveOrFail(MethodHandles.java:3750)
> at 
> java.base/java.lang.invoke.MethodHandles$Lookup.findVirtual(MethodHandles.java:2767)
> at 
> org.apache.spark.sql.connect.client.arrow.ArrowSerializer$.$anonfun$serializerFor$19(ArrowSerializer.scala:495)
> at 
> org.apache.spark.sql.connect.client.arrow.ArrowSerializer$.$anonfun$serializerFor$19$adapted(ArrowSerializer.scala:491)
> at 
> org.apache.spark.sql.connect.client.arrow.ArrowSerializer$.$anonfun$structSerializerFor$1(ArrowSerializer.scala:549)
> at scala.collection.immutable.ArraySeq.map(ArraySeq.scala:75)
> at scala.collection.immutable.ArraySeq.map(ArraySeq.scala:35)
> at 
> org.apache.spark.sql.connect.client.arrow.ArrowSerializer$.structSerializerFor(ArrowSerializer.scala:547)
> at 
> org.apache.spark.sql.connect.client.arrow.ArrowSerializer$.serializerFor(ArrowSerializer.scala:491)
> at 
> org.apache.spark.sql.connect.client.arrow.ArrowSerializer$.$anonfun$structSerializerFor$1(ArrowSerializer.scala:548)
> at scala.collection.immutable.ArraySeq.map(ArraySeq.scala:75)
> at scala.collection.immutable.ArraySeq.map(ArraySeq.scala:35)
> at 
> org.apache.spark.sql.connect.client.arrow.ArrowSerializer$.structSerializerFor(ArrowSerializer.scala:547)
> at 
> org.apache.spark.sql.connect.client.arrow.ArrowSerializer$.serializerFor(ArrowSerializer.scala:491)
> at 
> org.apache.spark.sql.connect.client.arrow.ArrowSerializer$.serializerFor(ArrowSerializer.scala:237)
> at 
> org.apache.spark.sql.connect.client.arrow.ArrowSerializer.<init>(ArrowSerializer.scala:62)
> at 
> org.apache.spark.sql.connect.client.arrow.ArrowSerializer$$anon$1.<init>(ArrowSerializer.scala:161)
> at 
> org.apache.spark.sql.connect.client.arrow.ArrowSerializer$.serialize(ArrowSerializer.scala:160)
> ```
> We have have a possible patch for this issue.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to