当我在Apache Flink中只运行一个作业时,为什么我在任务管理器中看到几个已完成的作业?

时间:2015-12-11 23:24:33

标签: apache-flink

在Apache Flink中,我在远程群集上运行任务。我有一个包含以下命令的任务。 我想知道,为什么Flink网络客户端在完成的工作中将我的任务视为几个不同的工作?

personRecords =    env.readCsvFile("path to input file/dataset1.csv")
                .lineDelimiter("\n").ignoreFirstLine()
                .fieldDelimiter(",")           
                .includeFields("111")
                .types(Integer.class, String.class, String.class);

pData = personRecords.map(new cleanerMap());
pData = pData.sortPartition(3, Order.ASCENDING).setParallelism(1);
env.setParallelism(4);
MultiKey_List = partitionedData.collect();
...
pData = p.partitionCustom(new MyPartitioner(), 3);
DataSet<Tuple2<Integer, Integer>> dPairs =    pData.mapPartition(new  Calc());
dPairs = dPairs.flatMap(new TC(dPairs.collect())).setParallelism(1);
env.execute();

1 个答案:

答案 0 :(得分:3)

这是因为collect命令会将作业的执行触发到您调用它的位置。因此,它几乎与所有其他急切评估的api调用不同。触发执行作业的另一种方法是count

您在collect之后定义的所有其他接收器将在后续collect来电时执行,或者当您致电ExecutionEnvironment.execute时。