#--------------------------------------------------
# There are 1 DAGs in the session
#--------------------------------------------------
#--------------------------------------------------
# TEZ DAG plan: pig-0_scope-0
#--------------------------------------------------
Tez vertex scope-30	->	Tez vertex scope-54,
Tez vertex scope-54	->	Tez vertex scope-31,Tez vertex scope-64,
Tez vertex scope-64	->	Tez vertex scope-67,
Tez vertex scope-31	->	Tez vertex scope-67,
Tez vertex scope-67

Tez vertex scope-30
# Plan on vertex
Local Rearrange[tuple]{tuple}(false) - scope-43	->	 scope-54
|   |
|   Constant(DummyVal) - scope-42
|
|---New For Each(false,true)[tuple] - scope-53
    |   |
    |   Project[int][0] - scope-26
    |   |
    |   POUserFunc(org.apache.pig.impl.builtin.GetMemNumRows)[tuple] - scope-52
    |   |
    |   |---Project[tuple][*] - scope-51
    |
    |---PoissonSample - scope-44
        |
        |---d: 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
            |
            |---d: Load(file:///tmp/input1:org.apache.pig.builtin.PigStorage) - scope-0
Tez vertex scope-54
# Plan on vertex
POValueOutputTez - scope-63	->	 [scope-31, scope-64]
|
|---New For Each(false)[tuple] - scope-62
    |   |
    |   POUserFunc(org.apache.pig.backend.hadoop.executionengine.tez.plan.udf.PartitionSkewedKeysTez)[tuple] - scope-61
    |   |
    |   |---Project[tuple][*] - scope-60
    |
    |---New For Each(false,false)[tuple] - scope-59
        |   |
        |   Constant(-1) - scope-58
        |   |
        |   Project[bag][1] - scope-56
        |
        |---Package(Packager)[tuple]{bytearray} - scope-55
Tez vertex scope-64
# Plan on vertex
Local Rearrange[tuple]{int}(false) - scope-41	->	 scope-67
|   |
|   Project[int][0] - scope-26
|
|---d: New For Each(false,false)[bag] - scope-50
    |   |
    |   Cast[int] - scope-47
    |   |
    |   |---Project[bytearray][0] - scope-46
    |   |
    |   Cast[chararray] - scope-49
    |   |
    |   |---Project[bytearray][1] - scope-48
    |
    |---d: Load(file:///tmp/input1:org.apache.pig.builtin.PigStorage) - scope-45
Tez vertex scope-31
# Plan on vertex
a: Split - scope-73
|   |
|   Partition Rearrange[tuple]{int}(false) - scope-74	->	 scope-67
|   |   |
|   |   Project[int][0] - scope-75
|   |
|   Partition Rearrange[tuple]{int}(false) - scope-76	->	 scope-67
|   |   |
|   |   Project[int][0] - scope-77
|   |
|   |---b: Filter[bag] - scope-21
|       |   |
|       |   Equal To[boolean] - scope-24
|       |   |
|       |   |---Project[int][0] - scope-22
|       |   |
|       |   |---Constant(2) - scope-23
|
|---a: New For Each(false,false)[bag] - scope-15
    |   |
    |   Cast[int] - scope-10
    |   |
    |   |---Project[bytearray][0] - scope-9
    |   |
    |   Cast[chararray] - scope-13
    |   |
    |   |---Project[bytearray][1] - scope-12
    |
    |---a: Load(file:///tmp/input:org.apache.pig.builtin.PigStorage) - scope-8
Tez vertex scope-67
# Plan on vertex
e: Store(file:///tmp/pigoutput:org.apache.pig.builtin.PigStorage) - scope-29
|
|---New For Each(true,true)[tuple] - scope-71
    |   |
    |   Project[bag][1] - scope-69
    |   |
    |   Project[bag][2] - scope-70
    |
    |---Package(Packager)[tuple]{int} - scope-68
