3. Join
select u.name, o.orderid from order o join user u on o.uid = u.uid;
user
uid name
1
apple
2 orange
order
uid orderid
1
1001
1
1002
2
1003
Monday, 30 December,
4. Join
select u.name, o.orderid from order o join user u on o.uid = u.uid;
user
key
1
1
apple
2 orange
<1,apple>
2
uid name
value
<1,orange>
key
value
Map
order
uid orderid
1
1001
1
<2,1001>
1
1002
1
<2,1002>
2
1003
2
<2,1003>
Monday, 30 December,
5. Join
select u.name, o.orderid from order o join user u on o.uid = u.uid;
user
key
1
<1,apple>
1
<1,apple>
<1,orange>
1
<2,1001>
1
2 orange
value
2
apple
key
1
uid name
value
<2,1002>
key
value
2
<1,orange>
2
<2,1003>
Map
order
uid orderid
key
value
1
1001
1
<2,1001>
1
1002
1
<2,1002>
2
1003
2
<2,1003>
Monday, 30 December,
Shuffle
Sort
6. Join
select u.name, o.orderid from order o join user u on o.uid = u.uid;
user
key
1
name
orderid
<1,apple>
1
<1,apple>
apple
1001
<1,orange>
1
<2,1001>
apple
1002
1
2 orange
value
2
apple
key
1
uid name
value
<2,1002>
Map
order
uid orderid
key
value
1
1001
1
<2,1001>
1
1002
1
<2,1002>
2
1003
2
<2,1003>
Monday, 30 December,
Shuffle
Sort
Reduce
key
value
name
orderid
2
<1,orange>
orange
1003
2
<2,1003>
7. Group By
select rank, isonline, count(*) from city group by rank, isonline;
city
rank isonline
A
1
A
1
city
rank isonline
A
1
B
0
Monday, 30 December,
8. Group By
select rank, isonline, count(*) from city group by rank, isonline;
city
key
<A, 1>
rank isonline
A
1
A
value
2
key
value
<A, 1>
1
<B, 0>
1
1
Map
city
rank isonline
A
1
B
0
Monday, 30 December,
9. Group By
select rank, isonline, count(*) from city group by rank, isonline;
city
key
A
A
value
2
<A, 1>
2
<A, 1>
1
key
<A, 1>
rank isonline
value
1
key
value
<B, 0>
1
1
Map
city
rank isonline
A
1
B
0
Monday, 30 December,
key
value
<A, 1>
1
<B, 0>
1
Shuffle
Sort
10. Group By
select rank, isonline, count(*) from city group by rank, isonline;
city
key
A
A
value
2
<A, 1>
2
<A, 1>
1
key
<A, 1>
rank isonline
value
1
1
Map
city
rank isonline
A
1
B
0
Monday, 30 December,
key
value
<A, 1>
1
<B, 0>
1
rank isonline value
A
1
3
Reduce
Shuffle
Sort
key
value
<B, 0>
1
rank isonline value
B
0
1
11. Distinct
select dealid, count(distinct uid) num from order group by dealid;
uid dealid
1
1001
2
1002
2
1001
uid dealid
1
1002
1
1002
2
1001
Monday, 30 December,
12. Distinct
select dealid, count(distinct uid) num from order group by dealid;
uid dealid
1
1001
2
1002
2
1001
key
partition
value
Key
<1001, 1>
1
1001
<1002, 2>
1
1002
<1001, 2>
1
1001
Map
uid dealid
partition
value
Key
1
1002
key
1
1002
<1002, 1>
1
1002
2
1001
<1001, 2>
1
1001
Monday, 30 December,
13. Distinct
select dealid, count(distinct uid) num from order group by dealid;
uid dealid
1
1001
2
1002
2
1001
key
partition
value
Key
<1001, 1>
1
1001
<1002, 2>
1
1002
<1001, 2>
1
1001
Map
value
<1001, 1>
1
<1001, 2>
1
<1001, 2>
1
Shuffle
Sort
uid dealid
partition
value
Key
1
1002
key
1
1002
<1002, 1>
1
1002
2
1001
<1001, 2>
1
1001
Monday, 30 December,
key
key
value
<1002, 1>
2
<1002, 2>
1
14. Distinct
select dealid, count(distinct uid) num from order group by dealid;
uid dealid
1
1001
2
1002
2
1001
key
partition
value
Key
<1001, 1>
1
1001
<1002, 2>
1
1002
<1001, 2>
1
1001
Map
value
<1001, 1>
1
dealid num
<1001, 2>
1
1001
<1001, 2>
1
partition
value
Key
1
1002
key
1
1002
<1002, 1>
1
1002
2
1001
<1001, 2>
1
1001
2
Reduce
Shuffle
Sort
uid dealid
Monday, 30 December,
key
key
value
<1002, 1>
2
<1002, 2>
1
dealid num
1002
2
15. Distinct
select dealid, count(distinct uid), count(distinct date) from order group by dealid;
uid dealid date
1
1001 1101
2
1001 1101
2
1001 1102
Monday, 30 December,
16. Distinct
select dealid, count(distinct uid), count(distinct date) from order group by dealid;
key
uid dealid date
1
1001 1101
2
1001 1101
2
1001 1102
Monday, 30 December,
Map
value
partition
Key
<1001,1,1101>
1
1001
<1001,2,1101>
1
1001
<1001,2,1102>
1
1001
17. Distinct
select dealid, count(distinct uid), count(distinct date) from order group by dealid;
key
uid dealid date
1
1001 1101
2
1001 1101
2
1001 1102
Map
value
partition
Key
<1001,1,1101>
1
1001
<1001,2,1101>
1
1001
<1001,2,1102>
1
1001
需要在Reduce阶段在内存中分对uid和date去重
Monday, 30 December,
18. Distinct
select dealid, count(distinct uid), count(distinct date) from order group by dealid;
uid dealid date
1
1001 1101
2
1001 1101
2
1001 1102
Monday, 30 December,
19. Distinct
select dealid, count(distinct uid), count(distinct date) from order group by dealid;
key
uid dealid date
partition
value
Key
1001 1101
2
1001 1102
Monday, 30 December,
1001
<1001,1,1101>
1
1001
<1001,0,2>
1
1001
1
1001
1
1001
<1001,1,1102>
2
Map
1
<1001,0,2>
1001 1101
<1001,0,1>
<1001,1,1101>
1
1
1001
20. Distinct
select dealid, count(distinct uid), count(distinct date) from order group by dealid;
key
uid dealid date
partition
value
Key
1001 1101
2
1001 1102
1001
<1001,1,1101>
1
1001
<1001,0,2>
1
1001
1
1001
1
1001
<1001,1,1102>
2
Map
1
<1001,0,2>
1001 1101
<1001,0,1>
<1001,1,1101>
1
1
1001
只需要在Reduce阶段记录lastDealid, lastTag, lastuid, lastDate
Monday, 30 December,
47. AST Tree => QB
先序遍历AST Tree SemanticAnalyze#doPhase1
Parser
Semantic
Analyzer
Logical
Plan Gen.
26
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
48. AST Tree => QB
先序遍历AST Tree SemanticAnalyze#doPhase1
1
Parser
Semantic
Analyzer
Logical
Plan Gen.
26
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
49. AST Tree => QB
先序遍历AST Tree SemanticAnalyze#doPhase1
1
2
Parser
Semantic
Analyzer
Logical
Plan Gen.
26
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
50. AST Tree => QB
先序遍历AST Tree SemanticAnalyze#doPhase1
1
2
Parser
1.
Semantic
Analyzer
Logical
Plan Gen.
26
Monday, 30 December,
TOK_QUERY > 创建QB对象,循环递归⼦子节点
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
51. AST Tree => QB
先序遍历AST Tree SemanticAnalyze#doPhase1
1
2
Parser
1.
2.
Semantic
Analyzer
Logical
Plan Gen.
26
Monday, 30 December,
TOK_QUERY > 创建QB对象,循环递归⼦子节点
TOK_FROM > QB#aliasToTabs.put(alias, tabname); QB#aliases.put(alias, tabname);
QBParseInfo#aliasToSrc.put(alias.toLowerCase(), ast);
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
52. AST Tree => QB
先序遍历AST Tree SemanticAnalyze#doPhase1
1
2
1.
2.
3.
Parser
Semantic
Analyzer
Logical
Plan Gen.
26
Monday, 30 December,
TOK_QUERY > 创建QB对象,循环递归⼦子节点
TOK_FROM > QB#aliasToTabs.put(alias, tabname); QB#aliases.put(alias, tabname);
QBParseInfo#aliasToSrc.put(alias.toLowerCase(), ast);
TOK_INSERT > 循环递归⼦子节点
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
53. AST Tree => QB
先序遍历AST Tree SemanticAnalyze#doPhase1
1
2
1.
2.
3.
4.
Parser
Semantic
Analyzer
Logical
Plan Gen.
26
Monday, 30 December,
TOK_QUERY > 创建QB对象,循环递归⼦子节点
TOK_FROM > QB#aliasToTabs.put(alias, tabname); QB#aliases.put(alias, tabname);
QBParseInfo#aliasToSrc.put(alias.toLowerCase(), ast);
TOK_INSERT > 循环递归⼦子节点
TOK_DESTINATION > QBParseInfo#nameToDest.put(“insclause-i”, astnode)
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
54. AST Tree => QB
先序遍历AST Tree SemanticAnalyze#doPhase1
1
2
1.
2.
3.
4.
5.
Parser
Semantic
Analyzer
Logical
Plan Gen.
26
Monday, 30 December,
TOK_QUERY > 创建QB对象,循环递归⼦子节点
TOK_FROM > QB#aliasToTabs.put(alias, tabname); QB#aliases.put(alias, tabname);
QBParseInfo#aliasToSrc.put(alias.toLowerCase(), ast);
TOK_INSERT > 循环递归⼦子节点
TOK_DESTINATION > QBParseInfo#nameToDest.put(“insclause-i”, astnode)
TOK_SELECT > QBParseInfo#destToSelExpr.put(“insclause-i”, astnode);
destToAggregationExprs.put(“insclause-i”, astnode);
destToDistinctFuncExprs.put(“insclause-i”, astnode);
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
63. QB2 : QBParseInfo#joinExpr => QBJoinTree
先序遍历joinExpr⽣生成QBJoinTree
Parser
Semantic
Analyzer
Logical
Plan Gen.
33
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
64. QB2 : QBParseInfo#joinExpr => QBJoinTree
1
先序遍历joinExpr⽣生成QBJoinTree
p
/
c
p
QB2
Parser
Semantic
Analyzer
Logical
Plan Gen.
33
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
65. QB2 : QBParseInfo#joinExpr => QBJoinTree
1
2
先序遍历joinExpr⽣生成QBJoinTree
base
/
p du
/
c
p
p
/
c
p
QB1
QB2
Parser
Semantic
Analyzer
Logical
Plan Gen.
33
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
66. QB2 : QBJoinTree => RS + JOIN
前序遍历QBJoinTree
TS=TableScanOperator RS=ReduceSinkOperator JOIN=JoinOperator
Parser
Semantic
Analyzer
Logical
Plan Gen.
34
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
67. QB2 : QBJoinTree => RS + JOIN
前序遍历QBJoinTree
TS=TableScanOperator RS=ReduceSinkOperator JOIN=JoinOperator
base
/
p du
/
c
p
TS[c] TS[p]
Parser
Semantic
Analyzer
Logical
Plan Gen.
34
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
68. QB2 : QBJoinTree => RS + JOIN
前序遍历QBJoinTree
TS=TableScanOperator RS=ReduceSinkOperator JOIN=JoinOperator
base
/
p du
/
c
p
TS[c] TS[p]
|
|
RS[3] RS[4]
TS[c] TS[p]
Parser
Semantic
Analyzer
Logical
Plan Gen.
34
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
69. QB2 : QBJoinTree => RS + JOIN
前序遍历QBJoinTree
TS=TableScanOperator RS=ReduceSinkOperator JOIN=JoinOperator
base
/
p du
/
c
p
TS[c] TS[p]
|
|
RS[3] RS[4]
TS[c] TS[p]
Parser
Semantic
Analyzer
Logical
Plan Gen.
34
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
TS[c] TS[p]
|
|
RS[3] RS[4]
/
JOIN[5]
Physical
Optimizer
70. QB2 : QBJoinTree => RS + JOIN
前序遍历QBJoinTree
TS=TableScanOperator RS=ReduceSinkOperator JOIN=JoinOperator
Parser
Semantic
Analyzer
Logical
Plan Gen.
35
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
71. QB2 : QBJoinTree => RS + JOIN
前序遍历QBJoinTree
TS=TableScanOperator RS=ReduceSinkOperator JOIN=JoinOperator
base
/
p du
/
c
p
TS[c] TS[p]
|
|
RS[3] RS[4]
/
JOIN[5] TS[du]
Parser
Semantic
Analyzer
Logical
Plan Gen.
35
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
72. QB2 : QBJoinTree => RS + JOIN
前序遍历QBJoinTree
TS=TableScanOperator RS=ReduceSinkOperator JOIN=JoinOperator
base
/
p du
/
c
p
TS[c] TS[p]
|
|
RS[3] RS[4]
/
JOIN[5] TS[du]
|
|
RS[6]
RS[7]
TS[c] TS[p]
|
|
RS[3] RS[4]
/
JOIN[5] TS[du]
Parser
Semantic
Analyzer
Logical
Plan Gen.
35
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
73. QB2 : QBJoinTree => RS + JOIN
前序遍历QBJoinTree
TS=TableScanOperator RS=ReduceSinkOperator JOIN=JoinOperator
base
/
p du
/
c
p
TS[c] TS[p]
|
|
RS[3] RS[4]
/
JOIN[5] TS[du]
|
|
RS[6]
RS[7]
TS[c] TS[p]
|
|
RS[3] RS[4]
/
JOIN[5] TS[du]
Parser
Semantic
Analyzer
Logical
Plan Gen.
35
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
TS[c] TS[p]
|
|
RS[3] RS[4]
/
JOIN[5] TS[du]
|
|
RS[6]
RS[7]
/
JOIN[8]
74. QB2 : genBodyPlan
QBParseInfo#destToWhereExpr > FilterOperator
FIL= FilterOperator SEL= SelectOperator
Parser
Semantic
Analyzer
Logical
Plan Gen.
36
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
90. ReduceSinkDeDuplication
合并线性的相连的两个RS
from (select key, value from src group by key, value) s select s.key group by s.key;
Parser
Semantic
Analyzer
Logical
Plan Gen.
43
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
91. ReduceSinkDeDuplication
合并线性的相连的两个RS
from (select key, value from src group by key, value) s select s.key group by s.key;
TS
|
SEL
|
GBY
|
RS
|
GBY
|
SEL
|
GBY
|
FS
TS
|
RS
|
GBY
|
SEL
|
FS
Stage-1 Stage-2
Parser
Semantic
Analyzer
Logical
Plan Gen.
43
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
92. ReduceSinkDeDuplication
合并线性的相连的两个RS
from (select key, value from src group by key, value) s select s.key group by s.key;
TS
|
SEL
|
GBY
|
RS
|
GBY
|
SEL
|
GBY
|
FS
TS
|
RS
|
GBY
|
SEL
|
FS
key
partition
Key
pRS key,value key,value
cRS
key
key
Stage-1 Stage-2
Parser
Semantic
Analyzer
Logical
Plan Gen.
43
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
93. ReduceSinkDeDuplication
合并线性的相连的两个RS
from (select key, value from src group by key, value) s select s.key group by s.key;
TS
|
SEL
|
GBY
|
RS
|
GBY
|
SEL
|
GBY
|
FS
TS
|
RS
|
GBY
|
SEL
|
FS
key
partition
Key
pRS key,value key,value
cRS
key
key
pRS key完全包含cRS key,且排序顺序⼀一致
pRS partitionkey完全包含cRS partitionkey
Stage-1 Stage-2
Parser
Semantic
Analyzer
Logical
Plan Gen.
43
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
94. ReduceSinkDeDuplication
合并线性的相连的两个RS
from (select key, value from src group by key, value) s select s.key group by s.key;
TS
|
SEL
|
GBY
|
RS
|
GBY
|
SEL
|
GBY
|
FS
TS
|
RS
|
GBY
|
SEL
|
FS
key
partition
Key
pRS key,value key,value
cRS
key
key
pRS key完全包含cRS key,且排序顺序⼀一致
pRS partitionkey完全包含cRS partitionkey
Stage-1 Stage-2
Parser
Semantic
Analyzer
Logical
Plan Gen.
43
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
TS
|
SEL
|
GBY
|
RS
|
GBY
|
SEL
|
GBY
|
FS
95. ReduceSinkDeDuplication
合并线性的相连的两个RS
from (select key, value from src group by key, value) s select s.key group by s.key;
TS
|
SEL
|
GBY
|
RS
|
GBY
|
SEL
|
GBY
|
FS
TS
|
RS
|
GBY
|
SEL
|
FS
key
partition
Key
pRS key,value key,value
cRS
key
key
pRS key完全包含cRS key,且排序顺序⼀一致
pRS partitionkey完全包含cRS partitionkey
Stage-1 Stage-2
Parser
Semantic
Analyzer
Logical
Plan Gen.
43
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
TS
|
SEL
|
GBY
|
RS
|
GBY
|
SEL
|
GBY
|
FS
key : key, value
partitionkey : key
96. ReduceSinkDeDuplication
合并线性的相连的两个RS
from (select key, value from src group by key, value) s select s.key group by s.key;
TS
|
SEL
|
GBY
|
RS
|
GBY
|
SEL
|
GBY
|
FS
TS
|
RS
|
GBY
|
SEL
|
FS
key
partition
Key
pRS key,value key,value
cRS
key
key
pRS key完全包含cRS key,且排序顺序⼀一致
pRS partitionkey完全包含cRS partitionkey
Stage-1 Stage-2
Parser
Semantic
Analyzer
Logical
Plan Gen.
43
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
TS
|
SEL
|
GBY
|
key : key, value
RS
partitionkey : key
|
GBY
|
SEL
两个Job的numReduce
|
数⺫⽬目是否⼀一致
GBY
|
FS
99. R0 gen MoveTask & Fetch Task
GBY[12]
|
RS[13]
|
GBY[14]
|
SEL[15]
|
FS[17]
MapredLockWork[Stage-0]
Stage-0
Move Operator
QB1
Parser
Semantic
Analyzer
Logical
Plan Gen.
46
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
100. Begin Walk
TS[p]
|
TS[c] FIL[18]
|
|
RS[3] RS[4]
/
JOIN[5] TS[du]
|
|
RS[6]
RS[7]
/
JOIN[8]
|
SEL[10]
toWalk[] {TS[c], TS[du], TS[p]}
QB2
Parser
Semantic
Analyzer
Logical
Plan Gen.
47
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
101. Begin Walk
TS[p]
|
TS[c] FIL[18]
|
|
RS[3] RS[4]
/
JOIN[5] TS[du]
|
|
RS[6]
RS[7]
/
JOIN[8]
|
SEL[10]
toWalk[] {TS[c], TS[du], TS[p]}
opStack {}
QB2
Parser
Semantic
Analyzer
Logical
Plan Gen.
48
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
102. Begin Walk
TS[p]
|
TS[c] FIL[18]
|
|
RS[3] RS[4]
/
JOIN[5] TS[du]
|
|
RS[6]
RS[7]
/
JOIN[8]
|
SEL[10]
toWalk[] {TS[c], TS[du]}
opStack {TS[p]}
QB2
Parser
Semantic
Analyzer
Logical
Plan Gen.
49
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
103. R1 GenMRTableScan1
toWalk[] {TS[du], TS[c]} opStack {TS[p]}
Parser
Semantic
Analyzer
Logical
Plan Gen.
50
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
104. R1 GenMRTableScan1
toWalk[] {TS[du], TS[c]} opStack {TS[p]}
"".join([t + "%" for t in opStack]) == “ TS%”
Parser
Semantic
Analyzer
Logical
Plan Gen.
50
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
105. R1 GenMRTableScan1
toWalk[] {TS[du], TS[c]} opStack {TS[p]}
"".join([t + "%" for t in opStack]) == “ TS%”
TS[p]
|
TS[c] FIL[18]
|
|
RS[3] RS[4]
/
JOIN[5] TS[du]
|
|
RS[6]
RS[7]
/
JOIN[8]
|
SEL[10]
QB2
Parser
Semantic
Analyzer
Logical
Plan Gen.
50
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
127. R1 GenMRTableScan1
toWalk[] {TS[c]} opStack {TS[du]}
"".join([t + "%" for t in opStack]) == “ TS%”
Parser
Semantic
Analyzer
Logical
Plan Gen.
57
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
128. R1 GenMRTableScan1
toWalk[] {TS[c]} opStack {TS[du]}
"".join([t + "%" for t in opStack]) == “ TS%”
TS[du]
|
RS[7]
/
JOIN[8]
|
SEL[10]
|
GBY[12]
|
FS[21]
Parser
Semantic
Analyzer
Logical
Plan Gen.
57
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
129. R1 GenMRTableScan1
toWalk[] {TS[c]} opStack {TS[du]}
"".join([t + "%" for t in opStack]) == “ TS%”
TS[du] Stage-5 MapTask
|
RS[7]
/
JOIN[8]
|
SEL[10]
|
GBY[12]
|
FS[21]
TS[du]
|
RS[7]
/
JOIN[8]
|
SEL[10]
|
GBY[12]
|
FS[21]
Parser
Semantic
Analyzer
Logical
Plan Gen.
57
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
130. R2 GenMRRedSink1
toWalk[] {TS[c]} opStack {TS[du], RS[7]}
"".join([t + "%" for t in opStack]) == “ TS%.*RS%”
Parser
Semantic
Analyzer
Logical
Plan Gen.
58
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
131. R2 GenMRRedSink1
toWalk[] {TS[c]} opStack {TS[du], RS[7]}
"".join([t + "%" for t in opStack]) == “ TS%.*RS%”
TS[du] Stage-5 MapTask
|
RS[7]
/
JOIN[8]
|
SEL[10]
|
GBY[12]
|
FS[21]
Parser
Semantic
Analyzer
Logical
Plan Gen.
58
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
132. R2 GenMRRedSink1
toWalk[] {TS[c]} opStack {TS[du], RS[7]}
"".join([t + "%" for t in opStack]) == “ TS%.*RS%”
Stage-5 MapTask
TS[du] Stage-5 MapTask
|
RS[7]
/
JOIN[8]
|
SEL[10]
|
GBY[12]
|
FS[21]
TS[du]
|
RS[7]
/
JOIN[8]
|
SEL[10]
|
GBY[12]
|
FS[21]
Stage-5 ReduceTask
Parser
Semantic
Analyzer
Logical
Plan Gen.
58
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
158. CommonJoinResolver
Task A
Conditional Task
Memory Bound
MapJoin
LocalTask
MapJoinTas
k
Task C
Parser
Semantic
Analyzer
Logical
Plan Gen.
68
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
159. CommonJoinResolver
Task A
Conditional Task
Memory Bound
MapJoin
LocalTask
MapJoinTas
k
Task C
Parser
Semantic
Analyzer
Logical
Plan Gen.
68
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer
160. CommonJoinResolver
Task A
Conditional Task
Memory Bound
Run as a Backup
Task
MapJoin
LocalTask
CommonJoinTas
k
MapJoinTas
k
Task C
Parser
Semantic
Analyzer
Logical
Plan Gen.
68
Monday, 30 December,
Logical
Optimizer
Physical
Plan Gen.
Physical
Optimizer