#--------------------------------------------------
# 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(false,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(false,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
