#--------------------------------------------------
# There are 1 DAGs in the session
#--------------------------------------------------
#--------------------------------------------------
# TEZ DAG plan: pig-0_scope-0
#--------------------------------------------------
Tez vertex scope-45	->	Tez vertex group scope-55,Tez vertex group scope-56,
Tez vertex scope-46	->	Tez vertex group scope-55,Tez vertex group scope-56,
Tez vertex group scope-56	->	Tez vertex scope-52,
Tez vertex scope-52	->	Tez vertex scope-44,
Tez vertex scope-44	->	Tez vertex scope-51,
Tez vertex group scope-55	->	Tez vertex scope-51,
Tez vertex scope-51

Tez vertex scope-45
# Plan on vertex
d: BuildBloom Rearrange[tuple]{int}(false) - scope-57	->	[ scope-51, scope-52]
|   |
|   Project[int][0] - scope-58
|
|---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-46
# Plan on vertex
d: BuildBloom Rearrange[tuple]{int}(false) - scope-59	->	[ scope-51, scope-52]
|   |
|   Project[int][0] - scope-60
|
|---c: New For Each(false,false)[bag] - scope-23
    |   |
    |   Cast[int] - scope-18
    |   |
    |   |---Project[bytearray][0] - scope-17
    |   |
    |   Cast[int] - scope-21
    |   |
    |   |---Project[bytearray][1] - scope-20
    |
    |---c: Load(file:///tmp/input3:org.apache.pig.builtin.PigStorage) - scope-16
Tez vertex group scope-56	<-	 [scope-45, scope-46]	->	 scope-52
# No plan on vertex group
Tez vertex scope-52
# Combine plan on edge <scope-45>
org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.DistinctCombiner$Combine
# Combine plan on edge <scope-46>
org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.DistinctCombiner$Combine
# Plan on vertex
POValueOutputTez - scope-54	->	 [scope-44]
|
|---Package(BloomPackager)[tuple]{bytearray} - scope-53
Tez vertex scope-44
# Plan on vertex
d: BloomFilter Rearrange[tuple]{int}(false) - scope-29	<-	 scope-52	->	 scope-51
|   |
|   Project[int][0] - scope-30
|
|---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 group scope-55	<-	 [scope-45, scope-46]	->	 scope-51
# No plan on vertex group
Tez vertex scope-51
# Plan on vertex
e: Store(file:///tmp/pigoutput:org.apache.pig.builtin.PigStorage) - scope-43
|
|---e: New For Each(false,false,false)[bag] - scope-42
    |   |
    |   Project[int][0] - scope-36
    |   |
    |   Project[int][1] - scope-38
    |   |
    |   Project[int][3] - scope-40
    |
    |---d: New For Each(true,true)[tuple] - scope-35
        |   |
        |   Project[bag][1] - scope-33
        |   |
        |   Project[bag][2] - scope-34
        |
        |---d: Package(Packager)[tuple]{int} - scope-28
