#--------------------------------------------------
# There are 1 DAGs in the session
#--------------------------------------------------
#--------------------------------------------------
# TEZ DAG plan: pig-0_scope-0
#--------------------------------------------------
Tez vertex scope-30	->	Tez vertex scope-34,Tez vertex scope-36,
Tez vertex scope-34	->	Tez vertex scope-36,
Tez vertex scope-36	->	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
|   |
|   POValueOutputTez - scope-38	->	 [scope-36]
|   |
|   POValueOutputTez - scope-31	->	 [scope-34]
|
|---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-34
# Plan on vertex
POValueOutputTez - scope-39	->	 [scope-36]
|
|---b: Filter[bag] - scope-13
    |   |
    |   Equal To[boolean] - scope-16
    |   |
    |   |---Project[int][0] - scope-14
    |   |
    |   |---Constant(2) - scope-15
    |
    |---POValueInputTez - scope-35	<-	 scope-30
Tez vertex scope-36
# Plan on vertex
Local Rearrange[tuple]{tuple}(false) - scope-43	->	 scope-48
|   |
|   Constant(DummyVal) - scope-42
|
|---New For Each(false,true)[tuple] - scope-47
    |   |
    |   Project[int][0] - scope-26
    |   |
    |   POUserFunc(org.apache.pig.impl.builtin.GetMemNumRows)[tuple] - scope-46
    |   |
    |   |---Project[tuple][*] - scope-45
    |
    |---PoissonSample - scope-44
        |
        |---Local Rearrange[tuple]{int}(false) - scope-41	->	 scope-58
            |   |
            |   Project[int][0] - scope-26
            |
            |---POShuffledValueInputTez - scope-37	<-	 [scope-30, scope-34]
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-36	->	 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
