Josh Rosen created SPARK-9332:
---------------------------------

             Summary: CatalystTypeConverters.toScala does not work on UnsafeRows
                 Key: SPARK-9332
                 URL: https://issues.apache.org/jira/browse/SPARK-9332
             Project: Spark
          Issue Type: Bug
          Components: SQL
            Reporter: Josh Rosen
            Priority: Critical


When CatalystTypeConverters.toScala is applied to an UnsafeRow it may lead to 
an UnsupportedOperationException when it tries to use a generic getter to 
retrieve primitive columns.

For example:

{code}
== Parsed Logical Plan ==
Sort [c183#208 ASC,c183#208 ASC], true
 Project [c183#208,c184#209]
  LogicalRDD [c183#208,c184#209], MapPartitionsRDD[367] at 
DataFrameFuzzingSuite at NativeConstructorAccessorImpl.java:-2

== Analyzed Logical Plan ==
c183: binary, c184: int
Sort [c183#208 ASC,c183#208 ASC], true
 Project [c183#208,c184#209]
  LogicalRDD [c183#208,c184#209], MapPartitionsRDD[367] at 
DataFrameFuzzingSuite at NativeConstructorAccessorImpl.java:-2

== Optimized Logical Plan ==
Sort [c183#208 ASC,c183#208 ASC], true
 LogicalRDD [c183#208,c184#209], MapPartitionsRDD[367] at DataFrameFuzzingSuite 
at NativeConstructorAccessorImpl.java:-2

== Physical Plan ==
UnsafeExternalSort [c183#208 ASC,c183#208 ASC], true, 0
 Exchange rangepartitioning(c183#208 ASC,c183#208 ASC)
  PhysicalRDD [c183#208,c184#209], MapPartitionsRDD[367] at 
DataFrameFuzzingSuite at NativeConstructorAccessorImpl.java:-2
{code}

{code}
java.lang.UnsupportedOperationException
        at 
org.apache.spark.sql.catalyst.expressions.UnsafeRow.get(UnsafeRow.java:223)
        at 
org.apache.spark.sql.catalyst.CatalystTypeConverters$IdentityConverter$.toScalaImpl(CatalystTypeConverters.scala:143)
        at 
org.apache.spark.sql.catalyst.CatalystTypeConverters$CatalystTypeConverter.toScala(CatalystTypeConverters.scala:118)
        at 
org.apache.spark.sql.catalyst.CatalystTypeConverters$StructConverter.toScala(CatalystTypeConverters.scala:266)
        at 
org.apache.spark.sql.catalyst.CatalystTypeConverters$StructConverter.toScala(CatalystTypeConverters.scala:233)
        at 
org.apache.spark.sql.catalyst.CatalystTypeConverters$$anonfun$createToScalaConverter$2.apply(CatalystTypeConverters.scala:386)
        at 
org.apache.spark.sql.DataFrame$$anonfun$rdd$1$$anonfun$apply$9.apply(DataFrame.scala:1480)
        at 
org.apache.spark.sql.DataFrame$$anonfun$rdd$1$$anonfun$apply$9.apply(DataFrame.scala:1480)
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

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

Reply via email to