Here is a simplest example that reproduces the issue-
If you run pig -x tez_local -e 'explain -script test.pig', you will see two vertices that contains the following sub-plan-
What's happening is that since there are 2 stores (and thus 2 data flows, i.e. a=>c and a=>d), Pig generates two physical plans. Now TezCompile compiles them into a single tez plan but adds the same sub-plan twice.
This is an issue with any blocking operators (join, union, etc) followed by split.