#--------------------------------------------------
# There are 1 DAGs in the session
#--------------------------------------------------
#--------------------------------------------------
# TEZ DAG plan: pig-0_scope-0
#--------------------------------------------------
Tez vertex scope-29	->	Tez vertex group scope-63,Tez vertex group scope-64,
Tez vertex scope-30	->	Tez vertex group scope-63,Tez vertex group scope-64,
Tez vertex group scope-64	->	Tez vertex scope-43,
Tez vertex scope-43	->	Tez vertex scope-35,Tez vertex scope-53,
Tez vertex group scope-63	->	Tez vertex scope-53,
Tez vertex scope-53	->	Tez vertex scope-57,
Tez vertex scope-35	->	Tez vertex scope-57,
Tez vertex scope-57

Tez vertex scope-29
# Plan on vertex
Local Rearrange[tuple]{tuple}(false) - scope-67	->	 scope-43
|   |
|   Constant(DummyVal) - scope-68
|
|---New For Each(true,true)[tuple] - scope-74
    |   |
    |   Project[int][0] - scope-71
    |   |
    |   POUserFunc(org.apache.pig.impl.builtin.GetMemNumRows)[tuple] - scope-73
    |   |
    |   |---Project[tuple][*] - scope-72
    |
    |---PoissonSample - scope-70
        |
        |---Local Rearrange[tuple]{int}(false) - scope-65	->	 scope-53
            |   |
            |   Project[int][0] - scope-66
            |
            |---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-30
# Plan on vertex
Local Rearrange[tuple]{tuple}(false) - scope-77	->	 scope-43
|   |
|   Constant(DummyVal) - scope-78
|
|---New For Each(true,true)[tuple] - scope-84
    |   |
    |   Project[int][0] - scope-81
    |   |
    |   POUserFunc(org.apache.pig.impl.builtin.GetMemNumRows)[tuple] - scope-83
    |   |
    |   |---Project[tuple][*] - scope-82
    |
    |---PoissonSample - scope-80
        |
        |---Local Rearrange[tuple]{int}(false) - scope-75	->	 scope-53
            |   |
            |   Project[int][0] - scope-76
            |
            |---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-64	<-	 [scope-29, scope-30]	->	 scope-43
# No plan on vertex group
Tez vertex scope-43
# Plan on vertex
POValueOutputTez - scope-52	->	 [scope-35, scope-53]
|
|---New For Each(false)[tuple] - scope-51
    |   |
    |   POUserFunc(org.apache.pig.backend.hadoop.executionengine.tez.plan.udf.PartitionSkewedKeysTez)[tuple] - scope-50
    |   |
    |   |---Project[tuple][*] - scope-49
    |
    |---New For Each(false,false)[tuple] - scope-48
        |   |
        |   Constant(-1) - scope-47
        |   |
        |   Project[bag][1] - scope-45
        |
        |---Package(Packager)[tuple]{bytearray} - scope-44
Tez vertex group scope-63	<-	 [scope-29, scope-30]	->	 scope-53
# No plan on vertex group
Tez vertex scope-53
# Plan on vertex
POIdentityInOutTez - scope-54	<-	 scope-63	->	 scope-57
|   |
|   Project[int][0] - scope-25
Tez vertex scope-35
# Plan on vertex
Partition Rearrange[tuple]{int}(false) - scope-55	->	 scope-57
|   |
|   Project[int][0] - scope-26
|
|---d: New For Each(false,false)[bag] - scope-24
    |   |
    |   Cast[int] - scope-19
    |   |
    |   |---Project[bytearray][0] - scope-18
    |   |
    |   Cast[chararray] - scope-22
    |   |
    |   |---Project[bytearray][1] - scope-21
    |
    |---d: Load(file:///tmp/input1:org.apache.pig.builtin.PigStorage) - scope-17
Tez vertex scope-57
# Plan on vertex
e: Store(file:///tmp/pigoutput:org.apache.pig.builtin.PigStorage) - scope-28
|
|---New For Each(true,true)[tuple] - scope-61
    |   |
    |   Project[bag][1] - scope-59
    |   |
    |   Project[bag][2] - scope-60
    |
    |---Package(Packager)[tuple]{int} - scope-58
