viirya opened a new pull request #24415: [SPARK-27439][SQL] Use analyzed plan 
when explaining Dataset
URL: https://github.com/apache/spark/pull/24415
 
 
   ## What changes were proposed in this pull request?
   
   Because a review is resolved during analysis when we create a dataset, the 
content of the view is determined when the dataset is created, not when it is 
evaluated. Now the explain result of a dataset is not correctly consistent with 
the collected result of it, because we use pre-analyzed logical plan of the 
dataset in explain command. The explain command will analyzed the logical plan 
passed in. So if a view is changed after the dataset was created, the plans 
shown by explain command aren't the same with the plan of the dataset.
   
   ```scala
   scala> spark.range(10).createOrReplaceTempView("test")
   scala> spark.range(5).createOrReplaceTempView("test2")
   scala> spark.sql("select * from test").createOrReplaceTempView("tmp001")
   scala> val df = spark.sql("select * from tmp001")
   scala> spark.sql("select * from test2").createOrReplaceTempView("tmp001")
   scala> df.show
   +---+
   | id|
   +---+
   |  0|
   |  1|
   |  2|
   |  3|
   |  4|
   |  5|
   |  6|
   |  7|
   |  8|
   |  9|
   +---+
   scala> df.explain
   ```
   
   Before:
   ```scala
   == Physical Plan ==
   *(1) Range (0, 5, step=1, splits=12)
   ```
   
   After:
   ```scala
   == Physical Plan ==
   *(1) Range (0, 10, step=1, splits=12)
   
   ```
   
   ## How was this patch tested?
   
   Manually test.
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

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

Reply via email to