You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by jc...@apache.org on 2017/05/20 10:02:26 UTC
hive git commit: HIVE-16717: Extend shared scan optimizer to handle
partitions (Jesus Camacho Rodriguez, reviewed by Ashutosh Chauhan)
Repository: hive
Updated Branches:
refs/heads/master bb2f25c1a -> 7429f5ffc
HIVE-16717: Extend shared scan optimizer to handle partitions (Jesus Camacho Rodriguez, reviewed by Ashutosh Chauhan)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/7429f5ff
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/7429f5ff
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/7429f5ff
Branch: refs/heads/master
Commit: 7429f5ffc1d68c543c758307c9d8513fdef85e3a
Parents: bb2f25c
Author: Jesus Camacho Rodriguez <jc...@apache.org>
Authored: Fri May 19 14:18:09 2017 +0100
Committer: Jesus Camacho Rodriguez <jc...@apache.org>
Committed: Sat May 20 11:01:28 2017 +0100
----------------------------------------------------------------------
.../test/resources/testconfiguration.properties | 1 +
.../hive/ql/optimizer/SharedScanOptimizer.java | 29 +-
.../clientpositive/partition_shared_scan.q | 23 ++
.../llap/dynamic_partition_pruning.q.out | 46 +--
.../llap/partition_shared_scan.q.out | 293 +++++++++++++++++++
.../vectorized_dynamic_partition_pruning.q.out | 54 ++--
.../results/clientpositive/perf/query24.q.out | 92 +++---
7 files changed, 433 insertions(+), 105 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/7429f5ff/itests/src/test/resources/testconfiguration.properties
----------------------------------------------------------------------
diff --git a/itests/src/test/resources/testconfiguration.properties b/itests/src/test/resources/testconfiguration.properties
index e8df4d7..1d9296a 100644
--- a/itests/src/test/resources/testconfiguration.properties
+++ b/itests/src/test/resources/testconfiguration.properties
@@ -538,6 +538,7 @@ minillaplocal.query.files=acid_globallimit.q,\
orc_ppd_timestamp.q,\
order_null.q,\
partition_multilevels.q,\
+ partition_shared_scan.q,\
ptf.q,\
ptf_streaming.q,\
quotedid_smb.q,\
http://git-wip-us.apache.org/repos/asf/hive/blob/7429f5ff/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SharedScanOptimizer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SharedScanOptimizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SharedScanOptimizer.java
index 3349fc0..e31119f 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SharedScanOptimizer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SharedScanOptimizer.java
@@ -44,6 +44,7 @@ import org.apache.hadoop.hive.ql.exec.TableScanOperator;
import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
import org.apache.hadoop.hive.ql.exec.UnionOperator;
import org.apache.hadoop.hive.ql.parse.ParseContext;
+import org.apache.hadoop.hive.ql.parse.PrunedPartitionList;
import org.apache.hadoop.hive.ql.parse.SemanticException;
import org.apache.hadoop.hive.ql.parse.SemiJoinBranchInfo;
import org.apache.hadoop.hive.ql.plan.DynamicPruningEventDesc;
@@ -141,6 +142,15 @@ public class SharedScanOptimizer extends Transform {
// Skip
continue;
}
+ // If partitions do not match, we currently do not merge
+ PrunedPartitionList prevTsOpPPList = pctx.getPrunedPartitions(prevTsOp);
+ PrunedPartitionList tsOpPPList = pctx.getPrunedPartitions(tsOp);
+ if (prevTsOpPPList.hasUnknownPartitions()
+ || tsOpPPList.hasUnknownPartitions()
+ || !prevTsOpPPList.getPartitions().equals(tsOpPPList.getPartitions())) {
+ // Skip
+ continue;
+ }
// It seems these two operators can be merged.
// Check that plan meets some preconditions before doing it.
@@ -226,27 +236,18 @@ public class SharedScanOptimizer extends Transform {
}
private static Set<TableScanOperator> gatherNotValidTableScanOps(
- ParseContext pctx, SharedScanOptimizerCache optimizerCache) {
+ ParseContext pctx, SharedScanOptimizerCache optimizerCache) throws SemanticException {
// Find TS operators with partition pruning enabled in plan
// because these TS may potentially read different data for
// different pipeline.
// These can be:
- // 1) TS with static partitioning.
- // TODO: Check partition list of different TS and do not add if they are identical
- // 2) TS with DPP.
+ // 1) TS with DPP.
// TODO: Check if dynamic filters are identical and do not add.
- // 3) TS with semijoin DPP.
+ // 2) TS with semijoin DPP.
// TODO: Check for dynamic filters.
Set<TableScanOperator> notValidTableScanOps = new HashSet<>();
- // 1) TS with static partitioning.
+ // 1) TS with DPP.
Map<String, TableScanOperator> topOps = pctx.getTopOps();
- for (TableScanOperator tsOp : topOps.values()) {
- if (tsOp.getConf().getPartColumns() != null &&
- !tsOp.getConf().getPartColumns().isEmpty()) {
- notValidTableScanOps.add(tsOp);
- }
- }
- // 2) TS with DPP.
Collection<Operator<? extends OperatorDesc>> tableScanOps =
Lists.<Operator<?>>newArrayList(topOps.values());
Set<AppMasterEventOperator> s =
@@ -258,7 +259,7 @@ public class SharedScanOptimizer extends Transform {
optimizerCache.tableScanToDPPSource.put(dped.getTableScan(), a);
}
}
- // 3) TS with semijoin DPP.
+ // 2) TS with semijoin DPP.
for (Entry<ReduceSinkOperator, SemiJoinBranchInfo> e
: pctx.getRsToSemiJoinBranchInfo().entrySet()) {
notValidTableScanOps.add(e.getValue().getTsOp());
http://git-wip-us.apache.org/repos/asf/hive/blob/7429f5ff/ql/src/test/queries/clientpositive/partition_shared_scan.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/partition_shared_scan.q b/ql/src/test/queries/clientpositive/partition_shared_scan.q
new file mode 100644
index 0000000..7ddf294
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/partition_shared_scan.q
@@ -0,0 +1,23 @@
+set hive.merge.nway.joins=false;
+
+drop table foo;
+
+create table foo (i int) partitioned by (s string);
+insert overwrite table foo partition(s='foo') select cint from alltypesorc limit 10;
+insert overwrite table foo partition(s='bar') select cint from alltypesorc limit 10;
+
+explain
+select *
+from foo f1
+join part p1 on (p1.p_partkey = f1.i)
+join foo f2 on (f1.i = f2.i)
+where f1.s='foo' and f2.s='bar';
+
+explain
+select *
+from foo f1
+join part p1 on (p1.p_partkey = f1.i)
+join foo f2 on (f1.i = f2.i)
+where f1.s='foo' and f2.s='foo';
+
+drop table foo;
http://git-wip-us.apache.org/repos/asf/hive/blob/7429f5ff/ql/src/test/results/clientpositive/llap/dynamic_partition_pruning.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/dynamic_partition_pruning.q.out b/ql/src/test/results/clientpositive/llap/dynamic_partition_pruning.q.out
index 9c66115..2875e13 100644
--- a/ql/src/test/results/clientpositive/llap/dynamic_partition_pruning.q.out
+++ b/ql/src/test/results/clientpositive/llap/dynamic_partition_pruning.q.out
@@ -5662,10 +5662,10 @@ STAGE PLANS:
Tez
#### A masked pattern was here ####
Edges:
- Reducer 2 <- Map 1 (CUSTOM_SIMPLE_EDGE), Union 3 (CONTAINS)
- Reducer 4 <- Map 1 (BROADCAST_EDGE), Union 3 (SIMPLE_EDGE)
- Reducer 5 <- Reducer 4 (SIMPLE_EDGE)
- Reducer 7 <- Map 6 (CUSTOM_SIMPLE_EDGE), Union 3 (CONTAINS)
+ Reducer 3 <- Map 2 (CUSTOM_SIMPLE_EDGE), Union 4 (CONTAINS)
+ Reducer 5 <- Map 1 (BROADCAST_EDGE), Union 4 (SIMPLE_EDGE)
+ Reducer 6 <- Reducer 5 (SIMPLE_EDGE)
+ Reducer 8 <- Map 7 (CUSTOM_SIMPLE_EDGE), Union 4 (CONTAINS)
#### A masked pattern was here ####
Vertices:
Map 1
@@ -5674,18 +5674,22 @@ STAGE PLANS:
alias: srcpart
filterExpr: ds is not null (type: boolean)
Statistics: Num rows: 2000 Data size: 389248 Basic stats: COMPLETE Column stats: COMPLETE
- Filter Operator
- predicate: ds is not null (type: boolean)
+ Select Operator
+ expressions: ds (type: string)
+ outputColumnNames: _col0
Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: COMPLETE
- Select Operator
- expressions: ds (type: string)
- outputColumnNames: _col0
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
- Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: COMPLETE
+ Execution mode: llap
+ LLAP IO: no inputs
+ Map 2
+ Map Operator Tree:
+ TableScan
+ alias: srcpart
+ Statistics: Num rows: 2000 Data size: 389248 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: ds (type: string)
outputColumnNames: ds
@@ -5701,7 +5705,7 @@ STAGE PLANS:
value expressions: _col0 (type: string)
Execution mode: llap
LLAP IO: no inputs
- Map 6
+ Map 7
Map Operator Tree:
TableScan
alias: srcpart
@@ -5721,7 +5725,7 @@ STAGE PLANS:
value expressions: _col0 (type: string)
Execution mode: llap
LLAP IO: no inputs
- Reducer 2
+ Reducer 3
Execution mode: llap
Reduce Operator Tree:
Group By Operator
@@ -5742,7 +5746,7 @@ STAGE PLANS:
sort order: +
Map-reduce partition columns: _col0 (type: string)
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Reducer 4
+ Reducer 5
Execution mode: llap
Reduce Operator Tree:
Group By Operator
@@ -5770,7 +5774,7 @@ STAGE PLANS:
sort order: +
Map-reduce partition columns: _col0 (type: string)
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Reducer 5
+ Reducer 6
Execution mode: llap
Reduce Operator Tree:
Group By Operator
@@ -5785,7 +5789,7 @@ STAGE PLANS:
input format: org.apache.hadoop.mapred.SequenceFileInputFormat
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
- Reducer 7
+ Reducer 8
Execution mode: llap
Reduce Operator Tree:
Group By Operator
@@ -5806,8 +5810,8 @@ STAGE PLANS:
sort order: +
Map-reduce partition columns: _col0 (type: string)
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Union 3
- Vertex: Union 3
+ Union 4
+ Vertex: Union 4
Stage: Stage-0
Fetch Operator
http://git-wip-us.apache.org/repos/asf/hive/blob/7429f5ff/ql/src/test/results/clientpositive/llap/partition_shared_scan.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/partition_shared_scan.q.out b/ql/src/test/results/clientpositive/llap/partition_shared_scan.q.out
new file mode 100644
index 0000000..34ba87c
--- /dev/null
+++ b/ql/src/test/results/clientpositive/llap/partition_shared_scan.q.out
@@ -0,0 +1,293 @@
+PREHOOK: query: drop table foo
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: drop table foo
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: create table foo (i int) partitioned by (s string)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@foo
+POSTHOOK: query: create table foo (i int) partitioned by (s string)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@foo
+PREHOOK: query: insert overwrite table foo partition(s='foo') select cint from alltypesorc limit 10
+PREHOOK: type: QUERY
+PREHOOK: Input: default@alltypesorc
+PREHOOK: Output: default@foo@s=foo
+POSTHOOK: query: insert overwrite table foo partition(s='foo') select cint from alltypesorc limit 10
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@alltypesorc
+POSTHOOK: Output: default@foo@s=foo
+POSTHOOK: Lineage: foo PARTITION(s=foo).i SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
+PREHOOK: query: insert overwrite table foo partition(s='bar') select cint from alltypesorc limit 10
+PREHOOK: type: QUERY
+PREHOOK: Input: default@alltypesorc
+PREHOOK: Output: default@foo@s=bar
+POSTHOOK: query: insert overwrite table foo partition(s='bar') select cint from alltypesorc limit 10
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@alltypesorc
+POSTHOOK: Output: default@foo@s=bar
+POSTHOOK: Lineage: foo PARTITION(s=bar).i SIMPLE [(alltypesorc)alltypesorc.FieldSchema(name:cint, type:int, comment:null), ]
+PREHOOK: query: explain
+select *
+from foo f1
+join part p1 on (p1.p_partkey = f1.i)
+join foo f2 on (f1.i = f2.i)
+where f1.s='foo' and f2.s='bar'
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select *
+from foo f1
+join part p1 on (p1.p_partkey = f1.i)
+join foo f2 on (f1.i = f2.i)
+where f1.s='foo' and f2.s='bar'
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE)
+ Reducer 3 <- Map 5 (SIMPLE_EDGE), Reducer 2 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: f1
+ Statistics: Num rows: 10 Data size: 170 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: i is not null (type: boolean)
+ Statistics: Num rows: 10 Data size: 170 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: i (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 10 Data size: 170 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 10 Data size: 170 Basic stats: COMPLETE Column stats: NONE
+ Execution mode: llap
+ LLAP IO: no inputs
+ Map 4
+ Map Operator Tree:
+ TableScan
+ alias: p1
+ Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: p_partkey is not null (type: boolean)
+ Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
+ Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
+ Execution mode: llap
+ LLAP IO: no inputs
+ Map 5
+ Map Operator Tree:
+ TableScan
+ alias: f2
+ Statistics: Num rows: 10 Data size: 170 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: i is not null (type: boolean)
+ Statistics: Num rows: 10 Data size: 170 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: i (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 10 Data size: 170 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 10 Data size: 170 Basic stats: COMPLETE Column stats: NONE
+ Execution mode: llap
+ LLAP IO: no inputs
+ Reducer 2
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Inner Join 0 to 1
+ keys:
+ 0 _col0 (type: int)
+ 1 _col0 (type: int)
+ outputColumnNames: _col0, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10
+ Statistics: Num rows: 28 Data size: 17703 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 28 Data size: 17703 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col2 (type: int), _col3 (type: string), _col4 (type: string), _col5 (type: string), _col6 (type: string), _col7 (type: int), _col8 (type: string), _col9 (type: double), _col10 (type: string)
+ Reducer 3
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Inner Join 0 to 1
+ keys:
+ 0 _col0 (type: int)
+ 1 _col0 (type: int)
+ outputColumnNames: _col0, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11
+ Statistics: Num rows: 30 Data size: 19473 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: _col0 (type: int), 'foo' (type: string), _col2 (type: int), _col3 (type: string), _col4 (type: string), _col5 (type: string), _col6 (type: string), _col7 (type: int), _col8 (type: string), _col9 (type: double), _col10 (type: string), _col11 (type: int), 'bar' (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12
+ Statistics: Num rows: 30 Data size: 19473 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 30 Data size: 19473 Basic stats: COMPLETE Column stats: NONE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: explain
+select *
+from foo f1
+join part p1 on (p1.p_partkey = f1.i)
+join foo f2 on (f1.i = f2.i)
+where f1.s='foo' and f2.s='foo'
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select *
+from foo f1
+join part p1 on (p1.p_partkey = f1.i)
+join foo f2 on (f1.i = f2.i)
+where f1.s='foo' and f2.s='foo'
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+ Stage-1 is a root stage
+ Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+ Stage: Stage-1
+ Tez
+#### A masked pattern was here ####
+ Edges:
+ Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 4 (SIMPLE_EDGE)
+ Reducer 3 <- Map 1 (SIMPLE_EDGE), Reducer 2 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+ Vertices:
+ Map 1
+ Map Operator Tree:
+ TableScan
+ alias: f1
+ Statistics: Num rows: 10 Data size: 170 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: i is not null (type: boolean)
+ Statistics: Num rows: 10 Data size: 170 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: i (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 10 Data size: 170 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 10 Data size: 170 Basic stats: COMPLETE Column stats: NONE
+ Filter Operator
+ predicate: i is not null (type: boolean)
+ Statistics: Num rows: 10 Data size: 170 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: i (type: int)
+ outputColumnNames: _col0
+ Statistics: Num rows: 10 Data size: 170 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 10 Data size: 170 Basic stats: COMPLETE Column stats: NONE
+ Execution mode: llap
+ LLAP IO: no inputs
+ Map 4
+ Map Operator Tree:
+ TableScan
+ alias: p1
+ Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
+ Filter Operator
+ predicate: p_partkey is not null (type: boolean)
+ Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
+ Select Operator
+ expressions: p_partkey (type: int), p_name (type: string), p_mfgr (type: string), p_brand (type: string), p_type (type: string), p_size (type: int), p_container (type: string), p_retailprice (type: double), p_comment (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
+ Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 26 Data size: 16094 Basic stats: COMPLETE Column stats: COMPLETE
+ value expressions: _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string)
+ Execution mode: llap
+ LLAP IO: no inputs
+ Reducer 2
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Inner Join 0 to 1
+ keys:
+ 0 _col0 (type: int)
+ 1 _col0 (type: int)
+ outputColumnNames: _col0, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10
+ Statistics: Num rows: 28 Data size: 17703 Basic stats: COMPLETE Column stats: NONE
+ Reduce Output Operator
+ key expressions: _col0 (type: int)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: int)
+ Statistics: Num rows: 28 Data size: 17703 Basic stats: COMPLETE Column stats: NONE
+ value expressions: _col2 (type: int), _col3 (type: string), _col4 (type: string), _col5 (type: string), _col6 (type: string), _col7 (type: int), _col8 (type: string), _col9 (type: double), _col10 (type: string)
+ Reducer 3
+ Execution mode: llap
+ Reduce Operator Tree:
+ Merge Join Operator
+ condition map:
+ Inner Join 0 to 1
+ keys:
+ 0 _col0 (type: int)
+ 1 _col0 (type: int)
+ outputColumnNames: _col0, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11
+ Statistics: Num rows: 30 Data size: 19473 Basic stats: COMPLETE Column stats: NONE
+ Select Operator
+ expressions: _col0 (type: int), 'foo' (type: string), _col2 (type: int), _col3 (type: string), _col4 (type: string), _col5 (type: string), _col6 (type: string), _col7 (type: int), _col8 (type: string), _col9 (type: double), _col10 (type: string), _col11 (type: int), 'foo' (type: string)
+ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col11, _col12
+ Statistics: Num rows: 30 Data size: 19473 Basic stats: COMPLETE Column stats: NONE
+ File Output Operator
+ compressed: false
+ Statistics: Num rows: 30 Data size: 19473 Basic stats: COMPLETE Column stats: NONE
+ table:
+ input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+ output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+ serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ ListSink
+
+PREHOOK: query: drop table foo
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@foo
+PREHOOK: Output: default@foo
+POSTHOOK: query: drop table foo
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@foo
+POSTHOOK: Output: default@foo
http://git-wip-us.apache.org/repos/asf/hive/blob/7429f5ff/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out b/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out
index b9b8241..d9fc6b5 100644
--- a/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out
+++ b/ql/src/test/results/clientpositive/llap/vectorized_dynamic_partition_pruning.q.out
@@ -6444,10 +6444,10 @@ STAGE PLANS:
Tez
#### A masked pattern was here ####
Edges:
- Reducer 2 <- Map 1 (CUSTOM_SIMPLE_EDGE), Union 3 (CONTAINS)
- Reducer 4 <- Map 1 (BROADCAST_EDGE), Union 3 (SIMPLE_EDGE)
- Reducer 5 <- Reducer 4 (SIMPLE_EDGE)
- Reducer 7 <- Map 6 (CUSTOM_SIMPLE_EDGE), Union 3 (CONTAINS)
+ Reducer 3 <- Map 2 (CUSTOM_SIMPLE_EDGE), Union 4 (CONTAINS)
+ Reducer 5 <- Map 1 (BROADCAST_EDGE), Union 4 (SIMPLE_EDGE)
+ Reducer 6 <- Reducer 5 (SIMPLE_EDGE)
+ Reducer 8 <- Map 7 (CUSTOM_SIMPLE_EDGE), Union 4 (CONTAINS)
#### A masked pattern was here ####
Vertices:
Map 1
@@ -6456,18 +6456,30 @@ STAGE PLANS:
alias: srcpart
filterExpr: ds is not null (type: boolean)
Statistics: Num rows: 2000 Data size: 389248 Basic stats: COMPLETE Column stats: COMPLETE
- Filter Operator
- predicate: ds is not null (type: boolean)
+ Select Operator
+ expressions: ds (type: string)
+ outputColumnNames: _col0
Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: COMPLETE
- Select Operator
- expressions: ds (type: string)
- outputColumnNames: _col0
+ Reduce Output Operator
+ key expressions: _col0 (type: string)
+ sort order: +
+ Map-reduce partition columns: _col0 (type: string)
Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: COMPLETE
- Reduce Output Operator
- key expressions: _col0 (type: string)
- sort order: +
- Map-reduce partition columns: _col0 (type: string)
- Statistics: Num rows: 2000 Data size: 368000 Basic stats: COMPLETE Column stats: COMPLETE
+ Execution mode: vectorized, llap
+ LLAP IO: no inputs
+ Map Vectorization:
+ enabled: true
+ enabledConditionsMet: hive.vectorized.use.vector.serde.deserialize IS true
+ groupByVectorOutput: true
+ inputFileFormats: org.apache.hadoop.mapred.TextInputFormat
+ allNative: true
+ usesVectorUDFAdaptor: false
+ vectorized: true
+ Map 2
+ Map Operator Tree:
+ TableScan
+ alias: srcpart
+ Statistics: Num rows: 2000 Data size: 389248 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: ds (type: string)
outputColumnNames: ds
@@ -6491,7 +6503,7 @@ STAGE PLANS:
allNative: false
usesVectorUDFAdaptor: false
vectorized: true
- Map 6
+ Map 7
Map Operator Tree:
TableScan
alias: srcpart
@@ -6519,7 +6531,7 @@ STAGE PLANS:
allNative: false
usesVectorUDFAdaptor: false
vectorized: true
- Reducer 2
+ Reducer 3
Execution mode: vectorized, llap
Reduce Vectorization:
enabled: true
@@ -6547,7 +6559,7 @@ STAGE PLANS:
sort order: +
Map-reduce partition columns: _col0 (type: string)
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Reducer 4
+ Reducer 5
Execution mode: vectorized, llap
Reduce Vectorization:
enabled: true
@@ -6582,7 +6594,7 @@ STAGE PLANS:
sort order: +
Map-reduce partition columns: _col0 (type: string)
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Reducer 5
+ Reducer 6
Execution mode: vectorized, llap
Reduce Vectorization:
enabled: true
@@ -6604,7 +6616,7 @@ STAGE PLANS:
input format: org.apache.hadoop.mapred.SequenceFileInputFormat
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
- Reducer 7
+ Reducer 8
Execution mode: vectorized, llap
Reduce Vectorization:
enabled: true
@@ -6632,8 +6644,8 @@ STAGE PLANS:
sort order: +
Map-reduce partition columns: _col0 (type: string)
Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
- Union 3
- Vertex: Union 3
+ Union 4
+ Vertex: Union 4
Stage: Stage-0
Fetch Operator
http://git-wip-us.apache.org/repos/asf/hive/blob/7429f5ff/ql/src/test/results/clientpositive/perf/query24.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/perf/query24.q.out b/ql/src/test/results/clientpositive/perf/query24.q.out
index 3e43dad..105871f 100644
--- a/ql/src/test/results/clientpositive/perf/query24.q.out
+++ b/ql/src/test/results/clientpositive/perf/query24.q.out
@@ -98,20 +98,20 @@ POSTHOOK: type: QUERY
Plan optimized by CBO.
Vertex dependency in root stage
-Reducer 15 <- Map 14 (SIMPLE_EDGE), Map 22 (SIMPLE_EDGE)
-Reducer 16 <- Map 23 (SIMPLE_EDGE), Reducer 15 (SIMPLE_EDGE)
-Reducer 17 <- Map 24 (SIMPLE_EDGE), Reducer 16 (SIMPLE_EDGE)
-Reducer 18 <- Map 25 (SIMPLE_EDGE), Reducer 17 (SIMPLE_EDGE)
-Reducer 19 <- Map 26 (SIMPLE_EDGE), Reducer 18 (SIMPLE_EDGE)
-Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 9 (SIMPLE_EDGE)
-Reducer 20 <- Reducer 19 (SIMPLE_EDGE)
-Reducer 21 <- Reducer 20 (CUSTOM_SIMPLE_EDGE)
-Reducer 3 <- Map 10 (SIMPLE_EDGE), Reducer 2 (SIMPLE_EDGE)
-Reducer 4 <- Map 11 (SIMPLE_EDGE), Reducer 3 (SIMPLE_EDGE)
-Reducer 5 <- Map 12 (SIMPLE_EDGE), Reducer 4 (SIMPLE_EDGE)
-Reducer 6 <- Map 13 (SIMPLE_EDGE), Reducer 5 (SIMPLE_EDGE)
+Reducer 10 <- Map 18 (SIMPLE_EDGE), Reducer 9 (SIMPLE_EDGE)
+Reducer 11 <- Map 19 (SIMPLE_EDGE), Reducer 10 (SIMPLE_EDGE)
+Reducer 12 <- Map 17 (SIMPLE_EDGE), Reducer 11 (SIMPLE_EDGE)
+Reducer 13 <- Map 20 (SIMPLE_EDGE), Reducer 12 (SIMPLE_EDGE)
+Reducer 14 <- Reducer 13 (SIMPLE_EDGE)
+Reducer 15 <- Reducer 14 (CUSTOM_SIMPLE_EDGE)
+Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 16 (SIMPLE_EDGE)
+Reducer 3 <- Map 17 (SIMPLE_EDGE), Reducer 2 (SIMPLE_EDGE)
+Reducer 4 <- Map 18 (SIMPLE_EDGE), Reducer 3 (SIMPLE_EDGE)
+Reducer 5 <- Map 19 (SIMPLE_EDGE), Reducer 4 (SIMPLE_EDGE)
+Reducer 6 <- Map 20 (SIMPLE_EDGE), Reducer 5 (SIMPLE_EDGE)
Reducer 7 <- Reducer 6 (SIMPLE_EDGE)
-Reducer 8 <- Reducer 21 (CUSTOM_SIMPLE_EDGE), Reducer 7 (CUSTOM_SIMPLE_EDGE)
+Reducer 8 <- Reducer 15 (CUSTOM_SIMPLE_EDGE), Reducer 7 (CUSTOM_SIMPLE_EDGE)
+Reducer 9 <- Map 1 (SIMPLE_EDGE), Map 16 (SIMPLE_EDGE)
Stage-0
Fetch Operator
@@ -125,13 +125,13 @@ Stage-0
predicate:(_col3 > _col4)
Merge Join Operator [MERGEJOIN_154] (rows=231911707 width=489)
Conds:(Inner),Output:["_col0","_col1","_col2","_col3","_col4"]
- <-Reducer 21 [CUSTOM_SIMPLE_EDGE]
+ <-Reducer 15 [CUSTOM_SIMPLE_EDGE]
PARTITION_ONLY_SHUFFLE [RS_87]
Select Operator [SEL_85] (rows=1 width=400)
Output:["_col0"]
Group By Operator [GBY_84] (rows=1 width=400)
Output:["_col0"],aggregations:["avg(VALUE._col0)"]
- <-Reducer 20 [CUSTOM_SIMPLE_EDGE]
+ <-Reducer 14 [CUSTOM_SIMPLE_EDGE]
PARTITION_ONLY_SHUFFLE [RS_83]
Group By Operator [GBY_82] (rows=1 width=400)
Output:["_col0"],aggregations:["avg(_col10)"]
@@ -139,86 +139,86 @@ Stage-0
Output:["_col10"]
Group By Operator [GBY_79] (rows=463823414 width=88)
Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10"],aggregations:["sum(VALUE._col0)"],keys:KEY._col0, KEY._col1, KEY._col2, KEY._col3, KEY._col4, KEY._col5, KEY._col6, KEY._col7, KEY._col8, KEY._col9
- <-Reducer 19 [SIMPLE_EDGE]
+ <-Reducer 13 [SIMPLE_EDGE]
SHUFFLE [RS_78]
PartitionCols:_col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9
Group By Operator [GBY_77] (rows=927646829 width=88)
Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10"],aggregations:["sum(_col4)"],keys:_col22, _col17, _col18, _col19, _col20, _col21, _col13, _col14, _col8, _col10
Merge Join Operator [MERGEJOIN_153] (rows=927646829 width=88)
Conds:RS_73._col11, _col15=RS_74._col1, upper(_col2)(Inner),Output:["_col4","_col8","_col10","_col13","_col14","_col17","_col18","_col19","_col20","_col21","_col22"]
- <-Map 26 [SIMPLE_EDGE]
+ <-Map 20 [SIMPLE_EDGE]
SHUFFLE [RS_74]
PartitionCols:_col1, upper(_col2)
Select Operator [SEL_60] (rows=40000000 width=1014)
Output:["_col0","_col1","_col2"]
Filter Operator [FIL_143] (rows=40000000 width=1014)
predicate:(ca_zip is not null and ca_country is not null)
- TableScan [TS_58] (rows=40000000 width=1014)
+ TableScan [TS_15] (rows=40000000 width=1014)
default@customer_address,customer_address,Tbl:COMPLETE,Col:NONE,Output:["ca_state","ca_zip","ca_country"]
- <-Reducer 18 [SIMPLE_EDGE]
+ <-Reducer 12 [SIMPLE_EDGE]
SHUFFLE [RS_73]
PartitionCols:_col11, _col15
Merge Join Operator [MERGEJOIN_152] (rows=843315281 width=88)
Conds:RS_70._col0=RS_71._col0(Inner),Output:["_col4","_col8","_col10","_col11","_col13","_col14","_col15","_col17","_col18","_col19","_col20","_col21"]
- <-Map 25 [SIMPLE_EDGE]
+ <-Map 17 [SIMPLE_EDGE]
SHUFFLE [RS_71]
PartitionCols:_col0
Select Operator [SEL_57] (rows=462000 width=1436)
Output:["_col0","_col1","_col2","_col3","_col4","_col5"]
Filter Operator [FIL_142] (rows=462000 width=1436)
predicate:i_item_sk is not null
- TableScan [TS_55] (rows=462000 width=1436)
+ TableScan [TS_6] (rows=462000 width=1436)
default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_current_price","i_size","i_color","i_units","i_manager_id"]
- <-Reducer 17 [SIMPLE_EDGE]
+ <-Reducer 11 [SIMPLE_EDGE]
SHUFFLE [RS_70]
PartitionCols:_col0
Merge Join Operator [MERGEJOIN_151] (rows=766650239 width=88)
Conds:RS_67._col1=RS_68._col0(Inner),Output:["_col0","_col4","_col8","_col10","_col11","_col13","_col14","_col15"]
- <-Map 24 [SIMPLE_EDGE]
+ <-Map 19 [SIMPLE_EDGE]
SHUFFLE [RS_68]
PartitionCols:_col0
Select Operator [SEL_54] (rows=80000000 width=860)
Output:["_col0","_col1","_col2","_col3"]
Filter Operator [FIL_141] (rows=80000000 width=860)
predicate:(c_customer_sk is not null and c_birth_country is not null)
- TableScan [TS_52] (rows=80000000 width=860)
+ TableScan [TS_12] (rows=80000000 width=860)
default@customer,customer,Tbl:COMPLETE,Col:NONE,Output:["c_customer_sk","c_first_name","c_last_name","c_birth_country"]
- <-Reducer 16 [SIMPLE_EDGE]
+ <-Reducer 10 [SIMPLE_EDGE]
SHUFFLE [RS_67]
PartitionCols:_col1
Merge Join Operator [MERGEJOIN_150] (rows=696954748 width=88)
Conds:RS_64._col2=RS_65._col0(Inner),Output:["_col0","_col1","_col4","_col8","_col10","_col11"]
- <-Map 23 [SIMPLE_EDGE]
+ <-Map 18 [SIMPLE_EDGE]
SHUFFLE [RS_65]
PartitionCols:_col0
Select Operator [SEL_51] (rows=852 width=1910)
Output:["_col0","_col1","_col3","_col4"]
Filter Operator [FIL_140] (rows=852 width=1910)
predicate:((s_market_id = 7) and s_store_sk is not null and s_zip is not null)
- TableScan [TS_49] (rows=1704 width=1910)
+ TableScan [TS_9] (rows=1704 width=1910)
default@store,store,Tbl:COMPLETE,Col:NONE,Output:["s_store_sk","s_store_name","s_market_id","s_state","s_zip"]
- <-Reducer 15 [SIMPLE_EDGE]
+ <-Reducer 9 [SIMPLE_EDGE]
SHUFFLE [RS_64]
PartitionCols:_col2
Merge Join Operator [MERGEJOIN_149] (rows=633595212 width=88)
Conds:RS_61._col0, _col3=RS_62._col0, _col1(Inner),Output:["_col0","_col1","_col2","_col4"]
- <-Map 14 [SIMPLE_EDGE]
+ <-Map 1 [SIMPLE_EDGE]
SHUFFLE [RS_61]
PartitionCols:_col0, _col3
Select Operator [SEL_45] (rows=575995635 width=88)
Output:["_col0","_col1","_col2","_col3","_col4"]
Filter Operator [FIL_138] (rows=575995635 width=88)
predicate:(ss_item_sk is not null and ss_ticket_number is not null and ss_store_sk is not null and ss_customer_sk is not null)
- TableScan [TS_43] (rows=575995635 width=88)
+ TableScan [TS_0] (rows=575995635 width=88)
default@store_sales,store_sales,Tbl:COMPLETE,Col:NONE,Output:["ss_item_sk","ss_customer_sk","ss_store_sk","ss_ticket_number","ss_sales_price"]
- <-Map 22 [SIMPLE_EDGE]
+ <-Map 16 [SIMPLE_EDGE]
SHUFFLE [RS_62]
PartitionCols:_col0, _col1
Select Operator [SEL_48] (rows=57591150 width=77)
Output:["_col0","_col1"]
Filter Operator [FIL_139] (rows=57591150 width=77)
predicate:(sr_item_sk is not null and sr_ticket_number is not null)
- TableScan [TS_46] (rows=57591150 width=77)
+ TableScan [TS_3] (rows=57591150 width=77)
default@store_returns,store_returns,Tbl:COMPLETE,Col:NONE,Output:["sr_item_sk","sr_ticket_number"]
<-Reducer 7 [CUSTOM_SIMPLE_EDGE]
PARTITION_ONLY_SHUFFLE [RS_86]
@@ -237,57 +237,53 @@ Stage-0
Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9"],aggregations:["sum(_col4)"],keys:_col19, _col20, _col14, _col22, _col8, _col9, _col11, _col12, _col16
Merge Join Operator [MERGEJOIN_148] (rows=927646829 width=88)
Conds:RS_30._col17, _col21=RS_31._col1, upper(_col2)(Inner),Output:["_col4","_col8","_col9","_col11","_col12","_col14","_col16","_col19","_col20","_col22"]
- <-Map 13 [SIMPLE_EDGE]
+ <-Map 20 [SIMPLE_EDGE]
SHUFFLE [RS_31]
PartitionCols:_col1, upper(_col2)
Select Operator [SEL_17] (rows=40000000 width=1014)
Output:["_col0","_col1","_col2"]
Filter Operator [FIL_137] (rows=40000000 width=1014)
predicate:(ca_zip is not null and ca_country is not null)
- TableScan [TS_15] (rows=40000000 width=1014)
- default@customer_address,customer_address,Tbl:COMPLETE,Col:NONE,Output:["ca_state","ca_zip","ca_country"]
+ Please refer to the previous TableScan [TS_15]
<-Reducer 5 [SIMPLE_EDGE]
SHUFFLE [RS_30]
PartitionCols:_col17, _col21
Merge Join Operator [MERGEJOIN_147] (rows=843315281 width=88)
Conds:RS_27._col1=RS_28._col0(Inner),Output:["_col4","_col8","_col9","_col11","_col12","_col14","_col16","_col17","_col19","_col20","_col21"]
- <-Map 12 [SIMPLE_EDGE]
+ <-Map 19 [SIMPLE_EDGE]
SHUFFLE [RS_28]
PartitionCols:_col0
Select Operator [SEL_14] (rows=80000000 width=860)
Output:["_col0","_col1","_col2","_col3"]
Filter Operator [FIL_136] (rows=80000000 width=860)
predicate:(c_customer_sk is not null and c_birth_country is not null)
- TableScan [TS_12] (rows=80000000 width=860)
- default@customer,customer,Tbl:COMPLETE,Col:NONE,Output:["c_customer_sk","c_first_name","c_last_name","c_birth_country"]
+ Please refer to the previous TableScan [TS_12]
<-Reducer 4 [SIMPLE_EDGE]
SHUFFLE [RS_27]
PartitionCols:_col1
Merge Join Operator [MERGEJOIN_146] (rows=766650239 width=88)
Conds:RS_24._col2=RS_25._col0(Inner),Output:["_col1","_col4","_col8","_col9","_col11","_col12","_col14","_col16","_col17"]
- <-Map 11 [SIMPLE_EDGE]
+ <-Map 18 [SIMPLE_EDGE]
SHUFFLE [RS_25]
PartitionCols:_col0
Select Operator [SEL_11] (rows=852 width=1910)
Output:["_col0","_col1","_col3","_col4"]
Filter Operator [FIL_135] (rows=852 width=1910)
predicate:((s_market_id = 7) and s_store_sk is not null and s_zip is not null)
- TableScan [TS_9] (rows=1704 width=1910)
- default@store,store,Tbl:COMPLETE,Col:NONE,Output:["s_store_sk","s_store_name","s_market_id","s_state","s_zip"]
+ Please refer to the previous TableScan [TS_9]
<-Reducer 3 [SIMPLE_EDGE]
SHUFFLE [RS_24]
PartitionCols:_col2
Merge Join Operator [MERGEJOIN_145] (rows=696954748 width=88)
Conds:RS_21._col0=RS_22._col0(Inner),Output:["_col1","_col2","_col4","_col8","_col9","_col11","_col12"]
- <-Map 10 [SIMPLE_EDGE]
+ <-Map 17 [SIMPLE_EDGE]
SHUFFLE [RS_22]
PartitionCols:_col0
Select Operator [SEL_8] (rows=231000 width=1436)
Output:["_col0","_col1","_col2","_col4","_col5"]
Filter Operator [FIL_134] (rows=231000 width=1436)
predicate:((i_color = 'orchid') and i_item_sk is not null)
- TableScan [TS_6] (rows=462000 width=1436)
- default@item,item,Tbl:COMPLETE,Col:NONE,Output:["i_item_sk","i_current_price","i_size","i_color","i_units","i_manager_id"]
+ Please refer to the previous TableScan [TS_6]
<-Reducer 2 [SIMPLE_EDGE]
SHUFFLE [RS_21]
PartitionCols:_col0
@@ -300,15 +296,13 @@ Stage-0
Output:["_col0","_col1","_col2","_col3","_col4"]
Filter Operator [FIL_132] (rows=575995635 width=88)
predicate:(ss_item_sk is not null and ss_ticket_number is not null and ss_store_sk is not null and ss_customer_sk is not null)
- TableScan [TS_0] (rows=575995635 width=88)
- default@store_sales,store_sales,Tbl:COMPLETE,Col:NONE,Output:["ss_item_sk","ss_customer_sk","ss_store_sk","ss_ticket_number","ss_sales_price"]
- <-Map 9 [SIMPLE_EDGE]
+ Please refer to the previous TableScan [TS_0]
+ <-Map 16 [SIMPLE_EDGE]
SHUFFLE [RS_19]
PartitionCols:_col0, _col1
Select Operator [SEL_5] (rows=57591150 width=77)
Output:["_col0","_col1"]
Filter Operator [FIL_133] (rows=57591150 width=77)
predicate:(sr_item_sk is not null and sr_ticket_number is not null)
- TableScan [TS_3] (rows=57591150 width=77)
- default@store_returns,store_returns,Tbl:COMPLETE,Col:NONE,Output:["sr_item_sk","sr_ticket_number"]
+ Please refer to the previous TableScan [TS_3]