aboutsummaryrefslogtreecommitdiff
path: root/sql/hive
diff options
context:
space:
mode:
authorHerman van Hovell <hvanhovell@questtec.nl>2015-07-31 12:07:18 -0700
committerYin Huai <yhuai@databricks.com>2015-07-31 12:08:25 -0700
commit39ab199a3f735b7658ab3331d3e2fb03441aec13 (patch)
treeff72a5998e11b325e7e447535f60fd9774547819 /sql/hive
parent0a1d2ca42c8b31d6b0e70163795f0185d4622f87 (diff)
downloadspark-39ab199a3f735b7658ab3331d3e2fb03441aec13.tar.gz
spark-39ab199a3f735b7658ab3331d3e2fb03441aec13.tar.bz2
spark-39ab199a3f735b7658ab3331d3e2fb03441aec13.zip
[SPARK-8640] [SQL] Enable Processing of Multiple Window Frames in a Single Window Operator
This PR enables the processing of multiple window frames in a single window operator. This should improve the performance of processing multiple window expressions wich share partition by/order by clauses, because it will be more efficient with respect to memory use and group processing. Author: Herman van Hovell <hvanhovell@questtec.nl> Closes #7515 from hvanhovell/SPARK-8640 and squashes the following commits: f0e1c21 [Herman van Hovell] Changed Window Logical/Physical plans to use partition by/order by specs directly instead of using WindowSpec. e1711c2 [Herman van Hovell] Enabled the processing of multiple window frames in a single Window operator.
Diffstat (limited to 'sql/hive')
-rw-r--r--sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HivePlanTest.scala18
1 files changed, 18 insertions, 0 deletions
diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HivePlanTest.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HivePlanTest.scala
index bdb53ddf59..ba56a8a6b6 100644
--- a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HivePlanTest.scala
+++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HivePlanTest.scala
@@ -17,7 +17,10 @@
package org.apache.spark.sql.hive.execution
+import org.apache.spark.sql.functions._
import org.apache.spark.sql.QueryTest
+import org.apache.spark.sql.catalyst.plans.logical
+import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.hive.test.TestHive
class HivePlanTest extends QueryTest {
@@ -31,4 +34,19 @@ class HivePlanTest extends QueryTest {
comparePlans(optimized, correctAnswer)
}
+
+ test("window expressions sharing the same partition by and order by clause") {
+ val df = Seq.empty[(Int, String, Int, Int)].toDF("id", "grp", "seq", "val")
+ val window = Window.
+ partitionBy($"grp").
+ orderBy($"val")
+ val query = df.select(
+ $"id",
+ sum($"val").over(window.rowsBetween(-1, 1)),
+ sum($"val").over(window.rangeBetween(-1, 1))
+ )
+ val plan = query.queryExecution.analyzed
+ assert(plan.collect{ case w: logical.Window => w }.size === 1,
+ "Should have only 1 Window operator.")
+ }
}