#--------------------------------------------------
# There are 1 DAGs in the session
#--------------------------------------------------
#--------------------------------------------------
# TEZ DAG plan: pig-0_scope-1
#--------------------------------------------------
Tez vertex scope-139	->	Tez vertex scope-140,
Tez vertex scope-130	->	Tez vertex group scope-160,Tez vertex group scope-183,
Tez vertex scope-131	->	Tez vertex group scope-160,Tez vertex group scope-183,
Tez vertex group scope-183	->	Tez vertex scope-140,
Tez vertex scope-140	->	Tez vertex group scope-160,
Tez vertex group scope-160

Tez vertex scope-139
# Plan on vertex
d: Local Rearrange[tuple]{chararray}(false) - scope-91	->	 scope-140
|   |
|   Project[chararray][0] - scope-92
|
|---c: New For Each(false)[bag] - scope-84
    |   |
    |   Cast[chararray] - scope-82
    |   |
    |   |---Project[bytearray][0] - scope-81
    |
    |---c: Load(file:///tmp/input:org.apache.pig.builtin.PigStorage) - scope-80
Tez vertex scope-130
# Plan on vertex
1-10: Split - scope-184
|   |
|   d: Local Rearrange[tuple]{chararray}(false) - scope-189	->	 scope-140
|   |   |
|   |   Project[chararray][0] - scope-190
|   |
|   |---r: Filter[bag] - scope-185
|       |   |
|       |   Not Equal To[boolean] - scope-188
|       |   |
|       |   |---Project[chararray][0] - scope-186
|       |   |
|       |   |---Constant() - scope-187
|   |
|   u2: Split - scope-199
|   |   |
|   |   u3: Store(file:///tmp/pigoutput:org.apache.pig.builtin.PigStorage) - scope-204	->	 scope-129
|   |   |
|   |   |---e: Filter[bag] - scope-200
|   |       |   |
|   |       |   Equal To[boolean] - scope-203
|   |       |   |
|   |       |   |---Project[chararray][0] - scope-201
|   |       |   |
|   |       |   |---Constant() - scope-202
|   |   |
|   |   u3: Store(file:///tmp/pigoutput:org.apache.pig.builtin.PigStorage) - scope-209	->	 scope-129
|   |   |
|   |   |---f: Filter[bag] - scope-205
|   |       |   |
|   |       |   Equal To[boolean] - scope-208
|   |       |   |
|   |       |   |---Project[chararray][0] - scope-206
|   |       |   |
|   |       |   |---Constant(m) - scope-207
|   |
|   |---u2: New For Each(false,false)[bag] - scope-198
|       |   |
|       |   Project[chararray][0] - scope-196
|       |   |
|       |   Constant(DummyVal) - scope-197
|       |
|       |---s: Filter[bag] - scope-191
|           |   |
|           |   Not[boolean] - scope-195
|           |   |
|           |   |---Not Equal To[boolean] - scope-194
|           |       |
|           |       |---Project[chararray][0] - scope-192
|           |       |
|           |       |---Constant() - scope-193
|
|---a: New For Each(false)[bag] - scope-68
    |   |
    |   Cast[chararray] - scope-66
    |   |
    |   |---Project[bytearray][0] - scope-65
    |
    |---a: Load(file:///tmp/input:org.apache.pig.builtin.PigStorage) - scope-64
Tez vertex scope-131
# Plan on vertex
1-10: Split - scope-210
|   |
|   d: Local Rearrange[tuple]{chararray}(false) - scope-215	->	 scope-140
|   |   |
|   |   Project[chararray][0] - scope-216
|   |
|   |---r: Filter[bag] - scope-211
|       |   |
|       |   Not Equal To[boolean] - scope-214
|       |   |
|       |   |---Project[chararray][0] - scope-212
|       |   |
|       |   |---Constant() - scope-213
|   |
|   u2: Split - scope-225
|   |   |
|   |   u3: Store(file:///tmp/pigoutput:org.apache.pig.builtin.PigStorage) - scope-230	->	 scope-129
|   |   |
|   |   |---e: Filter[bag] - scope-226
|   |       |   |
|   |       |   Equal To[boolean] - scope-229
|   |       |   |
|   |       |   |---Project[chararray][0] - scope-227
|   |       |   |
|   |       |   |---Constant() - scope-228
|   |   |
|   |   u3: Store(file:///tmp/pigoutput:org.apache.pig.builtin.PigStorage) - scope-235	->	 scope-129
|   |   |
|   |   |---f: Filter[bag] - scope-231
|   |       |   |
|   |       |   Equal To[boolean] - scope-234
|   |       |   |
|   |       |   |---Project[chararray][0] - scope-232
|   |       |   |
|   |       |   |---Constant(m) - scope-233
|   |
|   |---u2: New For Each(false,false)[bag] - scope-224
|       |   |
|       |   Project[chararray][0] - scope-222
|       |   |
|       |   Constant(DummyVal) - scope-223
|       |
|       |---s: Filter[bag] - scope-217
|           |   |
|           |   Not[boolean] - scope-221
|           |   |
|           |   |---Not Equal To[boolean] - scope-220
|           |       |
|           |       |---Project[chararray][0] - scope-218
|           |       |
|           |       |---Constant() - scope-219
|
|---b: New For Each(false)[bag] - scope-73
    |   |
    |   Cast[chararray] - scope-71
    |   |
    |   |---Project[bytearray][0] - scope-70
    |
    |---b: Load(file:///tmp/input:org.apache.pig.builtin.PigStorage) - scope-69
Tez vertex group scope-183	<-	 [scope-130, scope-131]	->	 scope-140
# No plan on vertex group
Tez vertex scope-140
# Plan on vertex
u2: Split - scope-161
|   |
|   u3: Store(file:///tmp/pigoutput:org.apache.pig.builtin.PigStorage) - scope-166	->	 scope-129
|   |
|   |---e: Filter[bag] - scope-162
|       |   |
|       |   Equal To[boolean] - scope-165
|       |   |
|       |   |---Project[chararray][0] - scope-163
|       |   |
|       |   |---Constant() - scope-164
|   |
|   u3: Store(file:///tmp/pigoutput:org.apache.pig.builtin.PigStorage) - scope-171	->	 scope-129
|   |
|   |---f: Filter[bag] - scope-167
|       |   |
|       |   Equal To[boolean] - scope-170
|       |   |
|       |   |---Project[chararray][0] - scope-168
|       |   |
|       |   |---Constant(m) - scope-169
|
|---u2: New For Each(false,false)[bag] - scope-104
    |   |
    |   Project[chararray][0] - scope-100
    |   |
    |   Project[chararray][1] - scope-102
    |
    |---d: New For Each(true,true)[tuple] - scope-99
        |   |
        |   Project[bag][1] - scope-93
        |   |
        |   POBinCond[bag] - scope-98
        |   |
        |   |---Project[bag][2] - scope-94
        |   |
        |   |---POUserFunc(org.apache.pig.builtin.IsEmpty)[boolean] - scope-96
        |   |   |
        |   |   |---Project[bag][2] - scope-95
        |   |
        |   |---Constant({()}) - scope-97
        |
        |---d: Package(Packager)[tuple]{chararray} - scope-88
Tez vertex group scope-160	<-	 [scope-140, scope-140, scope-130, scope-130, scope-131, scope-131]	->	 null
# No plan on vertex group
