You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "koert kuipers (JIRA)" <ji...@apache.org> on 2016/06/04 04:20:59 UTC

[jira] [Comment Edited] (SPARK-15507) ClassCastException: SomeCaseClass cannot be cast to org.apache.spark.sql.Row

    [ https://issues.apache.org/jira/browse/SPARK-15507?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15315306#comment-15315306 ] 

koert kuipers edited comment on SPARK-15507 at 6/4/16 4:20 AM:
---------------------------------------------------------------

this used to make it very easy to go back and forth between a DataFrame and rdd: RDD[Row] with schema: StructType.

once you had the rdd you could update items in the row objects using any function X => Y and update the schema accordingly using ScalaReflection.schemaFor[Y]. when done you simply go back to a DataFrame using sqlContext.createDataFrame(rdd, schema).
 
after this change where Product is no longer recognized this route is no longer available. 



was (Author: koert):
this used to make it very easy to go back and forth between a DataFrame and rdd: RDD[Row] with schema: StructType.

once you had the rdd you could simply update items in the row objects using any function X => Y and update the schema accordingly using ScalaReflection.schemaFor[Y]. when done you simply go back to a DataFrame using sqlContext.createDataFrame(rdd, schema).
 
after this change where Product is no longer recognized this route is no longer available. 


> ClassCastException: SomeCaseClass cannot be cast to org.apache.spark.sql.Row
> ----------------------------------------------------------------------------
>
>                 Key: SPARK-15507
>                 URL: https://issues.apache.org/jira/browse/SPARK-15507
>             Project: Spark
>          Issue Type: Bug
>          Components: SQL
>         Environment: spark 2.0.0-SNAPSHOT may 24
>            Reporter: koert kuipers
>
> given this code:
> {noformat}
> case class Test(a: Int, b: String)
> val rdd = sc.parallelize(List(Row(List(Test(5, "ha"), Test(6, "ba")))))
> val schema = StructType(Seq(
>   StructField("x", ArrayType(
>     StructType(Seq(
>       StructField("a", IntegerType, false),
>       StructField("b", StringType, true)
>     )),
>     true)
>   , true)
>   ))
> val df = sqlc.createDataFrame(rdd, schema)
> df.show
> {noformat}
> this works fine in spark 1.6.1 and gives:
> {noformat}
> +----------------+
> |               x|
> +----------------+
> |[[5,ha], [6,ba]]|
> +----------------+
> {noformat}
> but in spark 2.0.0-SNAPSHOT i get:
> {noformat}
> org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 0.0 failed 1 times, most recent failure: Lost task 0.0 in stage 0.0 (TID 0, localhost): java.lang.RuntimeException: Error while encoding: java.lang.ClassCastException: Test cannot be cast to org.apache.spark.sql.Row
> [info] getexternalrowfield(input[0, org.apache.spark.sql.Row, false], 0, x, IntegerType) AS x#0
> [info] +- getexternalrowfield(input[0, org.apache.spark.sql.Row, false], 0, x, IntegerType)
> [info]    +- input[0, org.apache.spark.sql.Row, false]
> {noformat}



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

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