#--------------------------------------------------
# There are 1 DAGs in the session
#--------------------------------------------------
#--------------------------------------------------
# TEZ DAG plan: pig-0_scope-0
#--------------------------------------------------
Tez vertex scope-30	->	Tez vertex scope-48,Tez vertex scope-58,
Tez vertex scope-48	->	Tez vertex scope-40,Tez vertex scope-58,
Tez vertex scope-58	->	Tez vertex scope-62,
Tez vertex scope-40	->	Tez vertex scope-62,
Tez vertex scope-62

Tez vertex scope-30
# Plan on vertex
a: Split - scope-68
|   |
|   Local Rearrange[tuple]{tuple}(false) - scope-71	->	 scope-48
|   |   |
|   |   Constant(DummyVal) - scope-72
|   |
|   |---New For Each(false,true)[tuple] - scope-78
|       |   |
|       |   Project[int][0] - scope-75
|       |   |
|       |   POUserFunc(org.apache.pig.impl.builtin.GetMemNumRows)[tuple] - scope-77
|       |   |
|       |   |---Project[tuple][*] - scope-76
|       |
|       |---PoissonSample - scope-74
|           |
|           |---Local Rearrange[tuple]{int}(false) - scope-69	->	 scope-58
|               |   |
|               |   Project[int][0] - scope-70
|   |
|   Local Rearrange[tuple]{tuple}(false) - scope-81	->	 scope-48
|   |   |
|   |   Constant(DummyVal) - scope-82
|   |
|   |---New For Each(false,true)[tuple] - scope-88
|       |   |
|       |   Project[int][0] - scope-85
|       |   |
|       |   POUserFunc(org.apache.pig.impl.builtin.GetMemNumRows)[tuple] - scope-87
|       |   |
|       |   |---Project[tuple][*] - scope-86
|       |
|       |---PoissonSample - scope-84
|           |
|           |---Local Rearrange[tuple]{int}(false) - scope-79	->	 scope-58
|               |   |
|               |   Project[int][0] - scope-80
|               |
|               |---b: Filter[bag] - scope-13
|                   |   |
|                   |   Equal To[boolean] - scope-16
|                   |   |
|                   |   |---Project[int][0] - scope-14
|                   |   |
|                   |   |---Constant(2) - scope-15
|
|---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-48
# Plan on vertex
POValueOutputTez - scope-57	->	 [scope-40, scope-58]
|
|---New For Each(false)[tuple] - scope-56
    |   |
    |   POUserFunc(org.apache.pig.backend.hadoop.executionengine.tez.plan.udf.PartitionSkewedKeysTez)[tuple] - scope-55
    |   |
    |   |---Project[tuple][*] - scope-54
    |
    |---New For Each(false,false)[tuple] - scope-53
        |   |
        |   Constant(-1) - scope-52
        |   |
        |   Project[bag][1] - scope-50
        |
        |---Package(Packager)[tuple]{bytearray} - scope-49
Tez vertex scope-58
# Plan on vertex
POIdentityInOutTez - scope-59	<-	 scope-30	->	 scope-62
|   |
|   Project[int][0] - scope-26
Tez vertex scope-40
# Plan on vertex
Partition Rearrange[tuple]{int}(false) - scope-60	->	 scope-62
|   |
|   Project[int][0] - scope-27
|
|---d: New For Each(false,false)[bag] - scope-25
    |   |
    |   Cast[int] - scope-20
    |   |
    |   |---Project[bytearray][0] - scope-19
    |   |
    |   Cast[chararray] - scope-23
    |   |
    |   |---Project[bytearray][1] - scope-22
    |
    |---d: Load(file:///tmp/input1:org.apache.pig.builtin.PigStorage) - scope-18
Tez vertex scope-62
# Plan on vertex
e: Store(file:///tmp/pigoutput:org.apache.pig.builtin.PigStorage) - scope-29
|
|---New For Each(true,true)[tuple] - scope-66
    |   |
    |   Project[bag][1] - scope-64
    |   |
    |   Project[bag][2] - scope-65
    |
    |---Package(Packager)[tuple]{int} - scope-63
