#--------------------------------------------------
# There are 1 DAGs in the session
#--------------------------------------------------
#--------------------------------------------------
# TEZ DAG plan: pig-0_scope-0
#--------------------------------------------------
Tez vertex scope-106	->	Tez vertex scope-113,Tez vertex scope-126,Tez vertex scope-129,Tez vertex scope-148,Tez vertex scope-158,Tez vertex scope-167,Tez vertex group scope-208,
Tez vertex scope-113
Tez vertex scope-126
Tez vertex scope-129
Tez vertex scope-148	->	Tez vertex scope-158,
Tez vertex scope-158	->	Tez vertex scope-160,
Tez vertex scope-160
Tez vertex scope-167	->	Tez vertex group scope-208,
Tez vertex group scope-208

Tez vertex scope-106
# Plan on vertex
1-1: Split - scope-207
|   |
|   b: Split - scope-204
|   |   |
|   |   b1: Local Rearrange[tuple]{int}(false) - scope-18	->	 scope-113
|   |   |   |
|   |   |   Project[int][0] - scope-19
|   |   |
|   |   c1: Local Rearrange[tuple]{int}(false) - scope-49	->	 scope-126
|   |   |   |
|   |   |   Project[int][0] - scope-50
|   |   |
|   |   1-2: Split - scope-203
|   |   |   |
|   |   |   Local Rearrange[tuple]{tuple}(false) - scope-142	->	 scope-148
|   |   |   |   |
|   |   |   |   Constant(DummyVal) - scope-141
|   |   |   |
|   |   |   |---New For Each(false,true)[tuple] - scope-147
|   |   |       |   |
|   |   |       |   Project[int][0] - scope-88
|   |   |       |   |
|   |   |       |   POUserFunc(org.apache.pig.impl.builtin.GetMemNumRows)[tuple] - scope-146
|   |   |       |   |
|   |   |       |   |---Project[tuple][*] - scope-145
|   |   |       |
|   |   |       |---ReservoirSample - scope-144
|   |   |           |
|   |   |           |---e1: Local Rearrange[tuple]{int}(false) - scope-140	->	 scope-158
|   |   |               |   |
|   |   |               |   Project[int][0] - scope-88
|   |   |               |
|   |   |               |---e: Filter[bag] - scope-84
|   |   |                   |   |
|   |   |                   |   Less Than[boolean] - scope-87
|   |   |                   |   |
|   |   |                   |   |---Project[int][0] - scope-85
|   |   |                   |   |
|   |   |                   |   |---Constant(3) - scope-86
|   |   |   |
|   |   |   POValueOutputTez - scope-166	->	 [scope-167]
|   |   |   |
|   |   |   |---f1: Limit - scope-95
|   |   |       |
|   |   |       |---f: Filter[bag] - scope-91
|   |   |           |   |
|   |   |           |   Greater Than or Equal[boolean] - scope-94
|   |   |           |   |
|   |   |           |   |---Project[int][0] - scope-92
|   |   |           |   |
|   |   |           |   |---Constant(3) - scope-93
|   |
|   |---b: Filter[bag] - scope-9
|       |   |
|       |   Less Than or Equal[boolean] - scope-12
|       |   |
|       |   |---Project[int][0] - scope-10
|       |   |
|       |   |---Constant(5) - scope-11
|   |
|   c: Split - scope-205
|   |   |
|   |   c1: Local Rearrange[tuple]{int}(false) - scope-47	->	 scope-126
|   |   |   |
|   |   |   Project[int][0] - scope-48
|   |   |
|   |   c2: Local Rearrange[tuple]{int}(false) - scope-193	->	 scope-129
|   |   |   |
|   |   |   Project[int][0] - scope-195
|   |   |
|   |   |---c3: New For Each(false,false)[bag] - scope-181
|   |       |   |
|   |       |   Project[int][0] - scope-182
|   |       |   |
|   |       |   POUserFunc(org.apache.pig.builtin.AlgebraicMathBase$Initial)[tuple] - scope-183
|   |       |   |
|   |       |   |---Project[bag][0] - scope-184
|   |       |       |
|   |       |       |---Project[bag][1] - scope-185
|   |       |
|   |       |---Pre Combiner Local Rearrange[tuple]{Unknown} - scope-196
|   |
|   |---c: Filter[bag] - scope-34
|       |   |
|       |   Less Than or Equal[boolean] - scope-37
|       |   |
|       |   |---Project[int][0] - scope-35
|       |   |
|       |   |---Constant(10) - scope-36
|   |
|   d1: Split - scope-206
|   |   |
|   |   d1: Store(file:///tmp/pigoutput/d1:org.apache.pig.builtin.PigStorage) - scope-80
|   |   |
|   |   f2: Store(file:///tmp/pigoutput/f2:org.apache.pig.builtin.PigStorage) - scope-209	->	 scope-105
|   |
|   |---d1: Filter[bag] - scope-73
|       |   |
|       |   Equal To[boolean] - scope-76
|       |   |
|       |   |---Project[int][0] - scope-74
|       |   |
|       |   |---Constant(5) - scope-75
|       |
|       |---d: Filter[bag] - scope-69
|           |   |
|           |   Greater Than[boolean] - scope-72
|           |   |
|           |   |---Project[int][0] - scope-70
|           |   |
|           |   |---Constant(10) - scope-71
|
|---a: New For Each(false,false)[bag] - scope-7
    |   |
    |   Cast[int] - scope-2
    |   |
    |   |---Project[bytearray][0] - scope-1
    |   |
    |   Cast[int] - scope-5
    |   |
    |   |---Project[bytearray][1] - scope-4
    |
    |---a: Load(file:///tmp/input:org.apache.pig.builtin.PigStorage) - scope-0
Tez vertex scope-113
# Plan on vertex
b1: Split - scope-201
|   |
|   b1: Store(file:///tmp/pigoutput/b1:org.apache.pig.builtin.PigStorage) - scope-23
|   |
|   b2: Store(file:///tmp/pigoutput/b2:org.apache.pig.builtin.PigStorage) - scope-33
|   |
|   |---b2: New For Each(false,false)[bag] - scope-32
|       |   |
|       |   Project[int][0] - scope-26
|       |   |
|       |   POUserFunc(org.apache.pig.builtin.LongSum)[long] - scope-30
|       |   |
|       |   |---Project[bag][0] - scope-29
|       |       |
|       |       |---Project[bag][1] - scope-28
|
|---b1: Package(Packager)[tuple]{int} - scope-17
Tez vertex scope-126
# Plan on vertex
c1: Store(file:///tmp/pigoutput/c1:org.apache.pig.builtin.PigStorage) - scope-54
|
|---c1: New For Each(true,true)[tuple] - scope-53
    |   |
    |   Project[bag][1] - scope-51
    |   |
    |   Project[bag][2] - scope-52
    |
    |---c1: Package(Packager)[tuple]{int} - scope-46
Tez vertex scope-129
# Combine plan on edge <scope-106>
c2: Local Rearrange[tuple]{int}(false) - scope-197	->	 scope-129
|   |
|   Project[int][0] - scope-199
|
|---c3: New For Each(false,false)[bag] - scope-186
    |   |
    |   Project[int][0] - scope-187
    |   |
    |   POUserFunc(org.apache.pig.builtin.LongSum$Intermediate)[tuple] - scope-188
    |   |
    |   |---Project[bag][1] - scope-189
    |
    |---c2: Package(CombinerPackager)[tuple]{int} - scope-192
# Plan on vertex
c3: Store(file:///tmp/pigoutput/c1:org.apache.pig.builtin.PigStorage) - scope-68
|
|---c3: New For Each(false,false)[bag] - scope-67
    |   |
    |   Project[int][0] - scope-61
    |   |
    |   POUserFunc(org.apache.pig.builtin.LongSum$Final)[long] - scope-65
    |   |
    |   |---Project[bag][1] - scope-190
    |
    |---c2: Package(CombinerPackager)[tuple]{int} - scope-58
Tez vertex scope-148
# Plan on vertex
POValueOutputTez - scope-157	->	 [scope-158]
|
|---New For Each(false)[tuple] - scope-156
    |   |
    |   POUserFunc(org.apache.pig.backend.hadoop.executionengine.tez.plan.udf.FindQuantilesTez)[tuple] - scope-155
    |   |
    |   |---Project[tuple][*] - scope-154
    |
    |---New For Each(false,false)[tuple] - scope-153
        |   |
        |   Constant(-1) - scope-152
        |   |
        |   Project[bag][1] - scope-150
        |
        |---Package(Packager)[tuple]{bytearray} - scope-149
Tez vertex scope-158
# Plan on vertex
POIdentityInOutTez - scope-159	<-	 scope-106	->	 scope-160
|   |
|   Project[int][0] - scope-88
Tez vertex scope-160
# Plan on vertex
e1: Store(file:///tmp/pigoutput/e1:org.apache.pig.builtin.PigStorage) - scope-90
|
|---New For Each(true)[tuple] - scope-163
    |   |
    |   Project[bag][1] - scope-162
    |
    |---Package(LitePackager)[tuple]{int} - scope-161
Tez vertex scope-167
# Plan on vertex
f1: Split - scope-202
|   |
|   f1: Store(file:///tmp/pigoutput/f1:org.apache.pig.builtin.PigStorage) - scope-99
|   |
|   f2: Store(file:///tmp/pigoutput/f2:org.apache.pig.builtin.PigStorage) - scope-210	->	 scope-105
|
|---f1: Limit - scope-169
    |
    |---POValueInputTez - scope-168	<-	 scope-106
Tez vertex group scope-208	<-	 [scope-106, scope-167]	->	 null
# No plan on vertex group
