You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "mahmoud mehdi (JIRA)" <ji...@apache.org> on 2018/07/13 13:48:00 UTC

[jira] [Commented] (SPARK-24798) sortWithinPartitions(xx) will failed in java.lang.NullPointerException

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

mahmoud mehdi commented on SPARK-24798:
---------------------------------------

Hello [~sypark212],

Replacing Some by Option will solve the issue. 
In that case, a null value will be equal to None and not to Some(null).


{code:java}
 val ds = spark.createDataFrame(Array((1,"John"),(2,null))).withColumnRenamed("_1", "id").withColumnRenamed("_2", "name").map(row => Hoge(row.getAs[Int]("id"),Some(row.getAs[String]("name"))))
{code}

Best Regards,

> sortWithinPartitions(xx) will failed in java.lang.NullPointerException
> ----------------------------------------------------------------------
>
>                 Key: SPARK-24798
>                 URL: https://issues.apache.org/jira/browse/SPARK-24798
>             Project: Spark
>          Issue Type: Bug
>          Components: Spark Core
>    Affects Versions: 2.3.0
>            Reporter: shengyao piao
>            Priority: Minor
>
> I have some issue in Spark 2.3 when I run bellow code in spark-shell or spark-submit 
> I already figured out the reason of error is the name field contains Some(null),
> But I believe this code will run successfully in Spark 2.2
> Is it an expected behavior in Spark 2.3 ?
>  
> ・Spark code
> {code}
> case class Hoge (id : Int,name : Option[String])
>  val ds = spark.createDataFrame(Array((1,"John"),(2,null))).withColumnRenamed("_1", "id").withColumnRenamed("_2", "name").map(row => Hoge(row.getAs[Int]("id"),Some(row.getAs[String]("name"))))
>  
> ds.sortWithinPartitions("id").foreachPartition(iter => println(iter.isEmpty))
> {code}
> ・Error
> {code}
> java.lang.NullPointerException
>         at org.apache.spark.sql.catalyst.expressions.codegen.UnsafeRowWriter.write(UnsafeRowWriter.java:194)
>         at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIteratorForCodegenStage1.serializefromobject_doConsume$(Unknown Source)
>         at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIteratorForCodegenStage1.mapelements_doConsume$(Unknown Source)
>         at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIteratorForCodegenStage1.deserializetoobject_doConsume$(Unknown Source)
>         at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIteratorForCodegenStage1.sort_addToSorter$(Unknown Source)
>         at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIteratorForCodegenStage1.processNext(Unknown Source)
>         at org.apache.spark.sql.execution.BufferedRowIterator.hasNext(BufferedRowIterator.java:43)
>         at org.apache.spark.sql.execution.WholeStageCodegenExec$$anonfun$10$$anon$1.hasNext(WholeStageCodegenExec.scala:614)
>         at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:408)
>         at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:408)
>         at scala.collection.Iterator$class.isEmpty(Iterator.scala:330)
>         at scala.collection.AbstractIterator.isEmpty(Iterator.scala:1336)
>         at $line37.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$anonfun$1.apply(<console>:26)
>         at $line37.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$anonfun$1.apply(<console>:26)
>         at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$29.apply(RDD.scala:929)
>         at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$29.apply(RDD.scala:929)
>         at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2067)
>         at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2067)
>         at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87)
>         at org.apache.spark.scheduler.Task.run(Task.scala:109)
>         at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:345)
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>         at java.lang.Thread.run(Thread.java:748)
> {code}



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

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