#--------------------------------------------------
# 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-37,Tez vertex scope-64,
Tez vertex scope-64	->	Tez vertex scope-67,
Tez vertex scope-31	->	Tez vertex scope-35,Tez vertex scope-37,
Tez vertex scope-35	->	Tez vertex scope-37,
Tez vertex scope-37	->	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-37, 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
|   |
|   POValueOutputTez - scope-39	->	 [scope-37]
|   |
|   POValueOutputTez - scope-32	->	 [scope-35]
|
|---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-35
# Plan on vertex
POValueOutputTez - scope-40	->	 [scope-37]
|
|---b: Filter[bag] - scope-21
    |   |
    |   Equal To[boolean] - scope-24
    |   |
    |   |---Project[int][0] - scope-22
    |   |
    |   |---Constant(2) - scope-23
    |
    |---POValueInputTez - scope-36	<-	 scope-31
Tez vertex scope-37
# Plan on vertex
Partition Rearrange[tuple]{int}(false) - scope-65	->	 scope-67
|   |
|   Project[int][0] - scope-27
|
|---POShuffledValueInputTez - scope-38	<-	 [scope-31, scope-35]
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
