#--------------------------------------------------
# There are 1 DAGs in the session
#--------------------------------------------------
#--------------------------------------------------
# TEZ DAG plan: pig-0_scope-0
#--------------------------------------------------
Tez vertex scope-20	->	Tez vertex group scope-51,Tez vertex group scope-52,
Tez vertex scope-21	->	Tez vertex group scope-51,Tez vertex group scope-52,
Tez vertex group scope-52	->	Tez vertex scope-34,
Tez vertex scope-34	->	Tez vertex scope-44,
Tez vertex group scope-51	->	Tez vertex scope-44,
Tez vertex scope-44	->	Tez vertex scope-46,
Tez vertex scope-46

Tez vertex scope-20
# Plan on vertex
Local Rearrange[tuple]{tuple}(false) - scope-55	->	 scope-34
|   |
|   Constant(DummyVal) - scope-56
|
|---New For Each(false,true)[tuple] - scope-62
    |   |
    |   Project[int][0] - scope-59
    |   |
    |   POUserFunc(org.apache.pig.impl.builtin.GetMemNumRows)[tuple] - scope-61
    |   |
    |   |---Project[tuple][*] - scope-60
    |
    |---ReservoirSample - scope-58
        |
        |---d: Local Rearrange[tuple]{int}(false) - scope-53	->	 scope-44
            |   |
            |   Project[int][0] - scope-54
            |
            |---a: New For Each(false,false)[bag] - scope-7
                |   |
                |   Cast[int] - scope-2
                |   |
                |   |---Project[bytearray][0] - scope-1
                |   |
                |   Cast[chararray] - scope-5
                |   |
                |   |---Project[bytearray][1] - scope-4
                |
                |---a: Load(file:///tmp/input:org.apache.pig.builtin.PigStorage) - scope-0
Tez vertex scope-21
# Plan on vertex
Local Rearrange[tuple]{tuple}(false) - scope-65	->	 scope-34
|   |
|   Constant(DummyVal) - scope-66
|
|---New For Each(false,true)[tuple] - scope-72
    |   |
    |   Project[int][0] - scope-69
    |   |
    |   POUserFunc(org.apache.pig.impl.builtin.GetMemNumRows)[tuple] - scope-71
    |   |
    |   |---Project[tuple][*] - scope-70
    |
    |---ReservoirSample - scope-68
        |
        |---d: Local Rearrange[tuple]{int}(false) - scope-63	->	 scope-44
            |   |
            |   Project[int][0] - scope-64
            |
            |---c: New For Each(false,false)[bag] - scope-15
                |   |
                |   Cast[int] - scope-10
                |   |
                |   |---Project[bytearray][1] - scope-9
                |   |
                |   Cast[chararray] - scope-13
                |   |
                |   |---Project[bytearray][0] - scope-12
                |
                |---b: Load(file:///tmp/input:org.apache.pig.builtin.PigStorage) - scope-8
Tez vertex group scope-52	<-	 [scope-20, scope-21]	->	 scope-34
# No plan on vertex group
Tez vertex scope-34
# Plan on vertex
POValueOutputTez - scope-43	->	 [scope-44]
|
|---New For Each(false)[tuple] - scope-42
    |   |
    |   POUserFunc(org.apache.pig.backend.hadoop.executionengine.tez.plan.udf.FindQuantilesTez)[tuple] - scope-41
    |   |
    |   |---Project[tuple][*] - scope-40
    |
    |---New For Each(false,false)[tuple] - scope-39
        |   |
        |   Constant(-1) - scope-38
        |   |
        |   Project[bag][1] - scope-36
        |
        |---Package(Packager)[tuple]{bytearray} - scope-35
Tez vertex group scope-51	<-	 [scope-20, scope-21]	->	 scope-44
# No plan on vertex group
Tez vertex scope-44
# Plan on vertex
POIdentityInOutTez - scope-45	<-	 scope-51	->	 scope-46
|   |
|   Project[int][0] - scope-17
Tez vertex scope-46
# Plan on vertex
d: Store(file:///tmp/pigoutput:org.apache.pig.builtin.PigStorage) - scope-19
|
|---New For Each(true)[tuple] - scope-49
    |   |
    |   Project[bag][1] - scope-48
    |
    |---Package(LitePackager)[tuple]{int} - scope-47
