You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "Dongjoon Hyun (JIRA)" <ji...@apache.org> on 2016/06/25 21:08:37 UTC
[jira] [Updated] (SPARK-16208) Add `CollapseEmptyPlan` optimizer
[ https://issues.apache.org/jira/browse/SPARK-16208?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dongjoon Hyun updated SPARK-16208:
----------------------------------
Description:
This PR adds a new logical optimizer, `CollapseEmptyPlan`, to collapse a logical plans consisting of only empty LocalRelations. The only exceptional logical plan is aggregation. For aggregation plan, only simple cases are consider for this optimization.
**Before**
{code}
scala> sql("select a from values (1,2) T(a,b) where 1=0 group by a,b having a>1 order by a,b").explain
== Physical Plan ==
*Project [a#11]
+- *Sort [a#11 ASC, b#12 ASC], true, 0
+- Exchange rangepartitioning(a#11 ASC, b#12 ASC, 200)
+- *HashAggregate(keys=[a#11, b#12], functions=[])
+- Exchange hashpartitioning(a#11, b#12, 200)
+- *HashAggregate(keys=[a#11, b#12], functions=[])
+- LocalTableScan <empty>, [a#11, b#12]
{code}
**After**
{code}
scala> sql("select a from values (1,2) T(a,b) where 1=0 group by a,b having a>1 order by a,b").explain
== Physical Plan ==
LocalTableScan <empty>, [a#0]
{code}
was:
This issue adds a new logical optimizer, `CollapseEmptyPlan`, to collapse a logical plain consisting of only empty LocalRelations.
**Before**
{code}
scala> sql("select a from (select explode(array(1,2,3)) a) where 1=0 group by a having count(*)>1 order by a").explain
== Physical Plan ==
*Sort [a#15 ASC], true, 0
+- Exchange rangepartitioning(a#15 ASC, 200)
+- *Project [a#15]
+- *Filter (count(1)#17L > 1)
+- *HashAggregate(keys=[a#15], functions=[count(1)])
+- Exchange hashpartitioning(a#15, 200)
+- *HashAggregate(keys=[a#15], functions=[partial_count(1)])
+- Generate explode([1,2,3]), false, false, [a#15]
+- LocalTableScan <empty>
{code}
**After**
{code}
scala> sql("select a from (select explode(array(1,2,3)) a) where 1=0 group by a having count(*)>1 order by a").explain
== Physical Plan ==
LocalTableScan <empty>, [a#15]
{code}
> Add `CollapseEmptyPlan` optimizer
> ---------------------------------
>
> Key: SPARK-16208
> URL: https://issues.apache.org/jira/browse/SPARK-16208
> Project: Spark
> Issue Type: Improvement
> Components: SQL
> Reporter: Dongjoon Hyun
> Assignee: Apache Spark
> Priority: Minor
>
> This PR adds a new logical optimizer, `CollapseEmptyPlan`, to collapse a logical plans consisting of only empty LocalRelations. The only exceptional logical plan is aggregation. For aggregation plan, only simple cases are consider for this optimization.
> **Before**
> {code}
> scala> sql("select a from values (1,2) T(a,b) where 1=0 group by a,b having a>1 order by a,b").explain
> == Physical Plan ==
> *Project [a#11]
> +- *Sort [a#11 ASC, b#12 ASC], true, 0
> +- Exchange rangepartitioning(a#11 ASC, b#12 ASC, 200)
> +- *HashAggregate(keys=[a#11, b#12], functions=[])
> +- Exchange hashpartitioning(a#11, b#12, 200)
> +- *HashAggregate(keys=[a#11, b#12], functions=[])
> +- LocalTableScan <empty>, [a#11, b#12]
> {code}
> **After**
> {code}
> scala> sql("select a from values (1,2) T(a,b) where 1=0 group by a,b having a>1 order by a,b").explain
> == Physical Plan ==
> LocalTableScan <empty>, [a#0]
> {code}
--
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