在我的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保存以继续...
如何做为连续操作?
我已经看过执行模式了,但是没有这么做
关于, 巴斯蒂安
答案 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();