#--------------------------------------------------
# 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-37,Tez vertex scope-58,
Tez vertex scope-58	->	Tez vertex scope-62,
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-62,
Tez vertex scope-62

Tez vertex scope-30
# Plan on vertex
Local Rearrange[tuple]{tuple}(false) - scope-43	->	 scope-48
|   |
|   Constant(DummyVal) - scope-42
|
|---New For Each(true,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
            |
            |---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-48
# Plan on vertex
POValueOutputTez - scope-57	->	 [scope-37, 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-31
# Plan on vertex
a: Split - scope-68
|   |
|   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-60	->	 scope-62
|   |
|   Project[int][0] - scope-27
|
|---POShuffledValueInputTez - scope-38	<-	 [scope-31, scope-35]
Tez vertex scope-62
# Plan on vertex
e: Store(file:///tmp/output: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
