SparkFlowTranslator(JavaSparkContext sparkEnv,
Settings flowSettings,
SparkAccumulatorFactory accumulatorFactory,
Map<Class<?>, Comparator<?>> comparators) {
this.sparkEnv = Objects.requireNonNull(sparkEnv);
this.settings = Objects.requireNonNull(flowSettings);
this.accumulatorFactory = Objects.requireNonNull(accumulatorFactory);
this.comparators = Objects.requireNonNull(comparators);
Translation.add(translations, FlowUnfolder.InputOperator.class, new InputTranslator());
Translation.add(translations, FlatMap.class, new FlatMapTranslator());
Translation.add(translations, ReduceStateByKey.class, new ReduceStateByKeyTranslator(settings));
Translation.add(translations, Union.class, new UnionTranslator());
Translation.add(translations, ReduceByKey.class, new ReduceByKeyTranslator(),
ReduceByKeyTranslator::wantTranslate);
Translation.add(translations, Join.class, new BroadcastHashJoinTranslator(),
BroadcastHashJoinTranslator::wantTranslate);
Translation.add(translations, Join.class, new BatchJoinTranslator(),
BatchJoinTranslator::wantTranslate);
}