MapOperator projectN = MapOperator.builder(ProjectN.class)
.name("ProjectN")
.build();
JoinOperator joinOL = JoinOperator.builder(JoinOL.class, IntValue.class, 0, 0)
.name("JoinOL")
.build();
JoinOperator joinCOL = JoinOperator.builder(JoinCOL.class, IntValue.class, 0, 0)
.name("JoinCOL")
.build();
JoinOperator joinNCOL = JoinOperator.builder(JoinNCOL.class, IntValue.class, 4, 0)
.name("JoinNCOL")
.build();
ReduceOperator reduce = ReduceOperator.builder(Sum.class)
.keyField(IntValue.class, 0)
.keyField(StringValue.class, 1)
.keyField(StringValue.class, 3)
.keyField(StringValue.class, 4)
.keyField(StringValue.class, 5)
.keyField(StringValue.class, 6)
.keyField(StringValue.class, 7)
.name("Reduce")
.build();
FileDataSink result = new FileDataSink(new TupleOutputFormat(), resultPath, "Output");
result.setInput(reduce);
reduce.setInput(joinNCOL);
joinNCOL.setFirstInput(joinCOL);
joinNCOL.setSecondInput(projectN);
joinCOL.setFirstInput(projectC);
joinCOL.setSecondInput(joinOL);
joinOL.setFirstInput(mapO);