Pipe pipeLhs = new Each( new Pipe( "lhs" ), new Fields( "line" ), splitter );
Pipe pipeRhs = new Each( new Pipe( "rhs" ), new Fields( "line" ), splitter );
Pipe upperLower = new HashJoin( pipeLower, new Fields( "num" ), pipeUpper, new Fields( "num" ), new Fields( "numUpperLower", "charUpperLower", "num2UpperLower", "char2UpperLower" ) );
upperLower = new Each( upperLower, new Identity() );
Pipe lhsUpperLower = new HashJoin( pipeLhs, new Fields( "num" ), upperLower, new Fields( "numUpperLower" ), new Fields( "numLhs", "charLhs", "numUpperLower", "charUpperLower", "num2UpperLower", "char2UpperLower" ) );
lhsUpperLower = new Each( lhsUpperLower, new Identity() );
Pipe grouped = new CoGroup( "cogrouping", lhsUpperLower, new Fields( "numLhs" ), pipeRhs, new Fields( "num" ) );
Flow flow = getPlatform().getFlowConnector().connect( sources, sink, grouped );