Github user jerryshao commented on a diff in the pull request:

    https://github.com/apache/spark/pull/195#discussion_r11053408
  
    --- Diff: 
sql/core/src/main/scala/org/apache/spark/sql/parquet/ParquetTableOperations.scala
 ---
    @@ -40,7 +40,7 @@ import java.util.Date
      * Parquet table scan operator. Imports the file that backs the given
      * [[ParquetRelation]] as a RDD[Row].
      */
    -case class ParquetTableScan(
    +private[sql] case class ParquetTableScan(
         @transient output: Seq[Attribute],
         @transient relation: ParquetRelation,
         @transient columnPruningPred: Option[Expression])(
    --- End diff --
    
    Hi Michael,  actually I met NPE in my test. I think this code in 
`SparkEquiInnerJoin` will be executed in ExecuteBackend.
    
        val rightWithKeys = right.execute().mapPartitions { iter =>
          val generateRightKeys = new Projection(rightKeys, right.output)
          iter.map(row => (generateRightKeys(row), row.copy()))
        }
    
    As `right.output` is needed when when running mapPartitions, so this 
`right` will be serialized to ExecuteBackend, which may introduce the error I 
mentioned before.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to