Flink-数据集-Flink可以尊重多个流/输入上的处理顺序吗?

时间:2018-08-09 13:49:10

标签: apache-flink flink-sql

在我的Flink批处理程序(DataSet / Table)中,我正在读取多个文件,这会产生不同的流,进行一些处理并将其保存为输出格式
由于flink正在使用数据流模型,而我的流程并没有真正的关联,因此它是并行处理

但是我希望Flink至少尊重我的输出操作的顺序,因为我希望在flow2之前保存flow1

例如,我有类似的东西:

Table table1 = tableEnv.fromTableSource(new MyTableSource1());
DataSet<Obj1> dataSet1 = talbeEnv.toDataSet(table1.select("toto",..),Obj1.class)
dataSet1.output(new WateverdatasinkSQL())

Table table2 = tableEnv.fromTableSource(new MyTableSource2());
DataSet<Obj2 dataSet2 = tableEnv.toDataSet(table2.select("foo","bar",..),Obj2.class)
dataSet2.output(new WateverdatasinkSQL())

我希望flink等待dataSet1保存以继续...
如何做为连续操作?
我已经看过执行模式了,但是没有这么做

关于, 巴斯蒂安

1 个答案:

答案 0 :(得分:2)

最简单的解决方案是将两个流分离成单独的作业,然后一个接一个地执行它们。

Table table1 = tableEnv.fromTableSource(new MyTableSource1());
DataSet<Obj1> dataSet1 = talbeEnv.toDataSet(table1.select("toto",..), Obj1.class);
dataSet1.output(new WateverdatasinkSQL());
env.execute();

Table table2 = tableEnv.fromTableSource(new MyTableSource2());
DataSet<Obj2> dataSet2 = tableEnv.toDataSet(table2.select("foo","bar",..), Obj2.class);
dataSet2.output(new WateverdatasinkSQL());
env.execute();