public final void execute() {
this.forkFunction.registerAccumulators(this.inputRDD.rdd().sparkContext());
JavaRDD<ForkData<DI>> forkedData = this.inputRDD.flatMap(this.forkFunction)
.persist(this.persistLevel);
final String jobName = SparkJobTracker.getJobName(this.inputRDD.rdd().sparkContext());
forkedData.setName(String.format("%s-%s", jobName, forkedData.id()));
final long processedRecords = forkedData.count();
final Optional<RDDInfo> rddInfo = SparkUtil.getRddInfo(forkedData.context(), forkedData.id());
log.info("#processed records :{} name:{}", processedRecords, forkedData.name());
if (rddInfo.isPresent()) {
final long size = rddInfo.get().diskSize() + rddInfo.get().memSize();
log.info("rddInfo -> name:{} partitions:{} size:{}", forkedData.name(), rddInfo.get().numPartitions(),
size);
}
this.groupRDD = Optional.of(forkedData);
}