[ https://issues.apache.org/jira/browse/SPARK-14830?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dongjoon Hyun updated SPARK-14830:
----------------------------------
Description:
This issue aims to optimize GroupExpressions by removing repeating expressions.
**Before**
{code}
scala> sql("select a+1 from values 1,2 T(a) group by a+1, 1+a, A+1, 1+A").explain()
== Physical Plan ==
WholeStageCodegen
: +- TungstenAggregate(key=[(a#0 + 1)#6,(1 + a#0)#7,(A#0 + 1)#8,(1 + A#0)#9], functions=[],
output=[(a + 1)#5])
: +- INPUT
+- Exchange hashpartitioning((a#0 + 1)#6, (1 + a#0)#7, (A#0 + 1)#8, (1 + A#0)#9, 200), None
+- WholeStageCodegen
: +- TungstenAggregate(key=[(a#0 + 1) AS (a#0 + 1)#6,(1 + a#0) AS (1 + a#0)#7,(A#0
+ 1) AS (A#0 + 1)#8,(1 + A#0) AS (1 + A#0)#9], functions=[], output=[(a#0 + 1)#6,(1 + a#0)#7,(A#0
+ 1)#8,(1 + A#0)#9])
: +- INPUT
+- LocalTableScan [a#0], [[1],[2]]
{code}
**After**
{code}
scala> sql("select a+1 from values 1,2 T(a) group by a+1, 1+a, A+1, 1+A").explain()
== Physical Plan ==
WholeStageCodegen
: +- TungstenAggregate(key=[(a#0 + 1)#6], functions=[], output=[(a + 1)#5])
: +- INPUT
+- Exchange hashpartitioning((a#0 + 1)#6, 200), None
+- WholeStageCodegen
: +- TungstenAggregate(key=[(a#0 + 1) AS (a#0 + 1)#6], functions=[], output=[(a#0 +
1)#6])
: +- INPUT
+- LocalTableScan [a#0], [[1],[2]]
{code}
was:
This issue aims to optimize GroupExpressions by removing repeating expressions.
**Before**
{code}
scala> sql("select a from (select explode(array(1,2)) a) T group by a, a, a").explain()
== Physical Plan ==
WholeStageCodegen
: +- TungstenAggregate(key=[a#5,a#5,a#5], functions=[], output=[a#5])
: +- INPUT
+- Exchange hashpartitioning(a#5, a#5, a#5, 200), None
+- WholeStageCodegen
: +- TungstenAggregate(key=[a#5,a#5,a#5], functions=[], output=[a#5,a#5,a#5])
: +- INPUT
+- Generate explode([1,2]), false, false, [a#5]
+- Scan OneRowRelation[]
{code}
**After**
{code}
scala> sql("select a from (select explode(array(1,2)) a) T group by a, a, a").explain()
== Physical Plan ==
WholeStageCodegen
: +- TungstenAggregate(key=[a#5], functions=[], output=[a#5])
: +- INPUT
+- Exchange hashpartitioning(a#5, 200), None
+- WholeStageCodegen
: +- TungstenAggregate(key=[a#5], functions=[], output=[a#5])
: +- INPUT
+- Generate explode([1,2]), false, false, [a#5]
+- Scan OneRowRelation[]
{code}
> Add RemoveRepetitionFromGroupExpressions optimizer
> --------------------------------------------------
>
> Key: SPARK-14830
> URL: https://issues.apache.org/jira/browse/SPARK-14830
> Project: Spark
> Issue Type: Improvement
> Components: Optimizer
> Reporter: Dongjoon Hyun
>
> This issue aims to optimize GroupExpressions by removing repeating expressions.
> **Before**
> {code}
> scala> sql("select a+1 from values 1,2 T(a) group by a+1, 1+a, A+1, 1+A").explain()
> == Physical Plan ==
> WholeStageCodegen
> : +- TungstenAggregate(key=[(a#0 + 1)#6,(1 + a#0)#7,(A#0 + 1)#8,(1 + A#0)#9], functions=[],
output=[(a + 1)#5])
> : +- INPUT
> +- Exchange hashpartitioning((a#0 + 1)#6, (1 + a#0)#7, (A#0 + 1)#8, (1 + A#0)#9, 200),
None
> +- WholeStageCodegen
> : +- TungstenAggregate(key=[(a#0 + 1) AS (a#0 + 1)#6,(1 + a#0) AS (1 + a#0)#7,(A#0
+ 1) AS (A#0 + 1)#8,(1 + A#0) AS (1 + A#0)#9], functions=[], output=[(a#0 + 1)#6,(1 + a#0)#7,(A#0
+ 1)#8,(1 + A#0)#9])
> : +- INPUT
> +- LocalTableScan [a#0], [[1],[2]]
> {code}
> **After**
> {code}
> scala> sql("select a+1 from values 1,2 T(a) group by a+1, 1+a, A+1, 1+A").explain()
> == Physical Plan ==
> WholeStageCodegen
> : +- TungstenAggregate(key=[(a#0 + 1)#6], functions=[], output=[(a + 1)#5])
> : +- INPUT
> +- Exchange hashpartitioning((a#0 + 1)#6, 200), None
> +- WholeStageCodegen
> : +- TungstenAggregate(key=[(a#0 + 1) AS (a#0 + 1)#6], functions=[], output=[(a#0
+ 1)#6])
> : +- INPUT
> +- LocalTableScan [a#0], [[1],[2]]
> {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
|