#--------------------------------------------------
# There are 1 DAGs in the session
#--------------------------------------------------
#--------------------------------------------------
# TEZ DAG plan: pig-0_scope-0
#--------------------------------------------------
Tez vertex scope-27	->	Tez vertex scope-36,Tez vertex scope-46,
Tez vertex scope-36	->	Tez vertex scope-28,Tez vertex scope-46,
Tez vertex scope-46	->	Tez vertex scope-50,
Tez vertex scope-28	->	Tez vertex scope-50,
Tez vertex scope-50

Tez vertex scope-27
# Plan on vertex
Local Rearrange[tuple]{tuple}(false) - scope-31	->	 scope-36
|   |
|   Constant(DummyVal) - scope-30
|
|---New For Each(true,true)[tuple] - scope-35
    |   |
    |   Project[int][0] - scope-16
    |   |
    |   POUserFunc(org.apache.pig.impl.builtin.GetMemNumRows)[tuple] - scope-34
    |   |
    |   |---Project[tuple][*] - scope-33
    |
    |---PoissonSample - scope-32
        |
        |---Local Rearrange[tuple]{int}(false) - scope-29	->	 scope-46
            |   |
            |   Project[int][0] - scope-16
            |
            |---a: New For Each(false,false)[bag] - scope-7
                |   |
                |   Cast[int] - scope-2
                |   |
                |   |---Project[bytearray][0] - scope-1
                |   |
                |   Cast[int] - scope-5
                |   |
                |   |---Project[bytearray][1] - scope-4
                |
                |---a: Load(file:///tmp/input1:org.apache.pig.builtin.PigStorage) - scope-0
Tez vertex scope-36
# Plan on vertex
POValueOutputTez - scope-45	->	 [scope-28, scope-46]
|
|---New For Each(false)[tuple] - scope-44
    |   |
    |   POUserFunc(org.apache.pig.backend.hadoop.executionengine.tez.plan.udf.PartitionSkewedKeysTez)[tuple] - scope-43
    |   |
    |   |---Project[tuple][*] - scope-42
    |
    |---New For Each(false,false)[tuple] - scope-41
        |   |
        |   Constant(-1) - scope-40
        |   |
        |   Project[bag][1] - scope-38
        |
        |---Package(Packager)[tuple]{bytearray} - scope-37
Tez vertex scope-46
# Plan on vertex
POIdentityInOutTez - scope-47	<-	 scope-27	->	 scope-50
|   |
|   Project[int][0] - scope-16
Tez vertex scope-28
# Plan on vertex
Partition Rearrange[tuple]{int}(false) - scope-48	->	 scope-50
|   |
|   Project[int][0] - scope-17
|
|---b: New For Each(false,false)[bag] - scope-15
    |   |
    |   Cast[int] - scope-10
    |   |
    |   |---Project[bytearray][0] - scope-9
    |   |
    |   Cast[int] - scope-13
    |   |
    |   |---Project[bytearray][1] - scope-12
    |
    |---b: Load(file:///tmp/input2:org.apache.pig.builtin.PigStorage) - scope-8
Tez vertex scope-50
# Plan on vertex
d: Store(file:///tmp/output:org.apache.pig.builtin.PigStorage) - scope-26
|
|---d: New For Each(false,false,false)[bag] - scope-25
    |   |
    |   Project[int][0] - scope-19
    |   |
    |   Project[int][1] - scope-21
    |   |
    |   Project[int][3] - scope-23
    |
    |---New For Each(true,true)[tuple] - scope-54
        |   |
        |   Project[bag][1] - scope-52
        |   |
        |   Project[bag][2] - scope-53
        |
        |---Package(Packager)[tuple]{int} - scope-51
