#--------------------------------------------------
# There are 1 DAGs in the session
#--------------------------------------------------
#--------------------------------------------------
# TEZ DAG plan: pig-0_scope-1
#--------------------------------------------------
Tez vertex scope-125	->	Tez vertex scope-127,Tez vertex scope-130,
Tez vertex scope-127	->	Tez vertex scope-129,
Tez vertex scope-129
Tez vertex scope-130	->	Tez vertex scope-132,
Tez vertex scope-132

Tez vertex scope-125
# Plan on vertex
POValueOutputTez - scope-126	->	 [scope-127, scope-130]
|
|---a: New For Each(false,false)[bag] - scope-94
    |   |
    |   Cast[int] - scope-89
    |   |
    |   |---Project[bytearray][0] - scope-88
    |   |
    |   Cast[int] - scope-92
    |   |
    |   |---Project[bytearray][1] - scope-91
    |
    |---a: Load(file:///tmp/input:org.apache.pig.builtin.PigStorage) - scope-87
Tez vertex scope-127
# Plan on vertex
b: Local Rearrange[tuple]{int}(false) - scope-145	->	 scope-129
|   |
|   Project[int][0] - scope-147
|
|---b: New For Each(false,false)[bag] - scope-133
    |   |
    |   Project[int][0] - scope-134
    |   |
    |   POUserFunc(org.apache.pig.builtin.COUNT$Initial)[tuple] - scope-135
    |   |
    |   |---Project[bag][0] - scope-136
    |       |
    |       |---Project[bag][1] - scope-137
    |
    |---Pre Combiner Local Rearrange[tuple]{Unknown} - scope-148
        |
        |---POValueInputTez - scope-128	<-	 scope-125
Tez vertex scope-129
# Combine plan on edge <scope-127>
b: Local Rearrange[tuple]{int}(false) - scope-149	->	 scope-129
|   |
|   Project[int][0] - scope-151
|
|---b: New For Each(false,false)[bag] - scope-138
    |   |
    |   Project[int][0] - scope-139
    |   |
    |   POUserFunc(org.apache.pig.builtin.COUNT$Intermediate)[tuple] - scope-140
    |   |
    |   |---Project[bag][1] - scope-141
    |
    |---b: Package(CombinerPackager)[tuple]{int} - scope-144
# Plan on vertex
b: Store(file:///tmp/pigoutput/b:org.apache.pig.builtin.PigStorage) - scope-109
|
|---b: New For Each(false,false)[bag] - scope-108
    |   |
    |   Project[int][0] - scope-102
    |   |
    |   POUserFunc(org.apache.pig.builtin.COUNT$Final)[long] - scope-106
    |   |
    |   |---Project[bag][1] - scope-142
    |
    |---b: Package(CombinerPackager)[tuple]{int} - scope-99
Tez vertex scope-130
# Plan on vertex
c: Local Rearrange[tuple]{tuple}(false) - scope-164	->	 scope-132
|   |
|   Project[tuple][0] - scope-167
|
|---c: New For Each(false,false)[bag] - scope-152
    |   |
    |   Project[tuple][0] - scope-153
    |   |
    |   POUserFunc(org.apache.pig.builtin.COUNT$Initial)[tuple] - scope-154
    |   |
    |   |---Project[bag][1] - scope-155
    |       |
    |       |---Project[bag][1] - scope-156
    |
    |---Pre Combiner Local Rearrange[tuple]{Unknown} - scope-168
        |
        |---POValueInputTez - scope-131	<-	 scope-125
Tez vertex scope-132
# Combine plan on edge <scope-130>
c: Local Rearrange[tuple]{tuple}(false) - scope-169	->	 scope-132
|   |
|   Project[tuple][0] - scope-172
|
|---c: New For Each(false,false)[bag] - scope-157
    |   |
    |   Project[tuple][0] - scope-158
    |   |
    |   POUserFunc(org.apache.pig.builtin.COUNT$Intermediate)[tuple] - scope-159
    |   |
    |   |---Project[bag][1] - scope-160
    |
    |---c: Package(CombinerPackager)[tuple]{tuple} - scope-163
# Plan on vertex
c: Store(file:///tmp/pigoutput/c:org.apache.pig.builtin.PigStorage) - scope-124
|
|---c: New For Each(false,false)[bag] - scope-123
    |   |
    |   Project[tuple][0] - scope-117
    |   |
    |   POUserFunc(org.apache.pig.builtin.COUNT$Final)[long] - scope-121
    |   |
    |   |---Project[bag][1] - scope-161
    |
    |---c: Package(CombinerPackager)[tuple]{tuple} - scope-113
