[jira] [Assigned] (SPARK-15192) RowEncoder needs to verify nullability in a more explicit way
[ https://issues.apache.org/jira/browse/SPARK-15192?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Apache Spark reassigned SPARK-15192: Assignee: (was: Apache Spark) > RowEncoder needs to verify nullability in a more explicit way > - > > Key: SPARK-15192 > URL: https://issues.apache.org/jira/browse/SPARK-15192 > Project: Spark > Issue Type: Bug > Components: SQL >Reporter: Yin Huai > > When we create a Dataset from an RDD of rows with a specific schema, if the > nullability of a value does not match the nullability defined in the schema, > we will throw an exception that is not easy to understand. > It will be good to verify the nullability in a more explicit way. > {code} > import org.apache.spark.sql.types._ > import org.apache.spark.sql.Row > val schema = new StructType().add("a", StringType, false).add("b", > StringType, false) > val rdd = sc.parallelize(Row(null, "123") :: Row("234", null) :: Nil) > spark.createDataFrame(rdd, schema).show > {code} > {noformat} > java.lang.RuntimeException: Error while decoding: > java.lang.NullPointerException > createexternalrow(if (isnull(input[0, string])) null else input[0, > string].toString, if (isnull(input[1, string])) null else input[1, > string].toString, StructField(a,StringType,false), > StructField(b,StringType,false)) > :- if (isnull(input[0, string])) null else input[0, string].toString > : :- isnull(input[0, string]) > : : +- input[0, string] > : :- null > : +- input[0, string].toString > : +- input[0, string] > +- if (isnull(input[1, string])) null else input[1, string].toString >:- isnull(input[1, string]) >: +- input[1, string] >:- null >+- input[1, string].toString > +- input[1, string] > at > org.apache.spark.sql.catalyst.encoders.ExpressionEncoder.fromRow(ExpressionEncoder.scala:244) > at > org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1$$anonfun$apply$13.apply(Dataset.scala:2119) > at > org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1$$anonfun$apply$13.apply(Dataset.scala:2119) > at > scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234) > at > scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234) > at > scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33) > at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186) > at scala.collection.TraversableLike$class.map(TraversableLike.scala:234) > at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:186) > at > org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1.apply(Dataset.scala:2119) > at > org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:57) > at org.apache.spark.sql.Dataset.withNewExecutionId(Dataset.scala:2407) > at > org.apache.spark.sql.Dataset.org$apache$spark$sql$Dataset$$execute$1(Dataset.scala:2118) > at > org.apache.spark.sql.Dataset.org$apache$spark$sql$Dataset$$collect(Dataset.scala:2125) > at org.apache.spark.sql.Dataset$$anonfun$head$1.apply(Dataset.scala:1859) > at org.apache.spark.sql.Dataset$$anonfun$head$1.apply(Dataset.scala:1858) > at org.apache.spark.sql.Dataset.withTypedCallback(Dataset.scala:2437) > at org.apache.spark.sql.Dataset.head(Dataset.scala:1858) > at org.apache.spark.sql.Dataset.take(Dataset.scala:2075) > at org.apache.spark.sql.Dataset.showString(Dataset.scala:239) > at org.apache.spark.sql.Dataset.show(Dataset.scala:530) > at org.apache.spark.sql.Dataset.show(Dataset.scala:490) > at org.apache.spark.sql.Dataset.show(Dataset.scala:499) > ... 50 elided > Caused by: java.lang.NullPointerException > at > org.apache.spark.sql.catalyst.expressions.GeneratedClass$SpecificSafeProjection.apply(Unknown > Source) > at > org.apache.spark.sql.catalyst.encoders.ExpressionEncoder.fromRow(ExpressionEncoder.scala:241) > ... 72 more > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332) - To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org For additional commands, e-mail: issues-h...@spark.apache.org
[jira] [Assigned] (SPARK-15192) RowEncoder needs to verify nullability in a more explicit way
[ https://issues.apache.org/jira/browse/SPARK-15192?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Apache Spark reassigned SPARK-15192: Assignee: Apache Spark > RowEncoder needs to verify nullability in a more explicit way > - > > Key: SPARK-15192 > URL: https://issues.apache.org/jira/browse/SPARK-15192 > Project: Spark > Issue Type: Bug > Components: SQL >Reporter: Yin Huai >Assignee: Apache Spark > > When we create a Dataset from an RDD of rows with a specific schema, if the > nullability of a value does not match the nullability defined in the schema, > we will throw an exception that is not easy to understand. > It will be good to verify the nullability in a more explicit way. > {code} > import org.apache.spark.sql.types._ > import org.apache.spark.sql.Row > val schema = new StructType().add("a", StringType, false).add("b", > StringType, false) > val rdd = sc.parallelize(Row(null, "123") :: Row("234", null) :: Nil) > spark.createDataFrame(rdd, schema).show > {code} > {noformat} > java.lang.RuntimeException: Error while decoding: > java.lang.NullPointerException > createexternalrow(if (isnull(input[0, string])) null else input[0, > string].toString, if (isnull(input[1, string])) null else input[1, > string].toString, StructField(a,StringType,false), > StructField(b,StringType,false)) > :- if (isnull(input[0, string])) null else input[0, string].toString > : :- isnull(input[0, string]) > : : +- input[0, string] > : :- null > : +- input[0, string].toString > : +- input[0, string] > +- if (isnull(input[1, string])) null else input[1, string].toString >:- isnull(input[1, string]) >: +- input[1, string] >:- null >+- input[1, string].toString > +- input[1, string] > at > org.apache.spark.sql.catalyst.encoders.ExpressionEncoder.fromRow(ExpressionEncoder.scala:244) > at > org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1$$anonfun$apply$13.apply(Dataset.scala:2119) > at > org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1$$anonfun$apply$13.apply(Dataset.scala:2119) > at > scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234) > at > scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234) > at > scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33) > at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186) > at scala.collection.TraversableLike$class.map(TraversableLike.scala:234) > at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:186) > at > org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1.apply(Dataset.scala:2119) > at > org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:57) > at org.apache.spark.sql.Dataset.withNewExecutionId(Dataset.scala:2407) > at > org.apache.spark.sql.Dataset.org$apache$spark$sql$Dataset$$execute$1(Dataset.scala:2118) > at > org.apache.spark.sql.Dataset.org$apache$spark$sql$Dataset$$collect(Dataset.scala:2125) > at org.apache.spark.sql.Dataset$$anonfun$head$1.apply(Dataset.scala:1859) > at org.apache.spark.sql.Dataset$$anonfun$head$1.apply(Dataset.scala:1858) > at org.apache.spark.sql.Dataset.withTypedCallback(Dataset.scala:2437) > at org.apache.spark.sql.Dataset.head(Dataset.scala:1858) > at org.apache.spark.sql.Dataset.take(Dataset.scala:2075) > at org.apache.spark.sql.Dataset.showString(Dataset.scala:239) > at org.apache.spark.sql.Dataset.show(Dataset.scala:530) > at org.apache.spark.sql.Dataset.show(Dataset.scala:490) > at org.apache.spark.sql.Dataset.show(Dataset.scala:499) > ... 50 elided > Caused by: java.lang.NullPointerException > at > org.apache.spark.sql.catalyst.expressions.GeneratedClass$SpecificSafeProjection.apply(Unknown > Source) > at > org.apache.spark.sql.catalyst.encoders.ExpressionEncoder.fromRow(ExpressionEncoder.scala:241) > ... 72 more > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332) - To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org For additional commands, e-mail: issues-h...@spark.apache.org