数据集-flink能尊重多个流/输入的处理顺序吗?

polhcujo  于 2021-06-21  发布在  Flink
关注(0)|答案(1)|浏览(318)

在我的flink批处理程序(dataset/table)中,我正在读取多个文件,这会产生不同的流,进行一些处理,并用输出格式保存它
由于flink使用的是数据流模型,而我的流实际上并不相关,所以它是并行处理的
但我希望flink至少尊重输出操作的顺序,因为我希望flow1在flow2之前被保存
例如,我有这样的东西:

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保存后继续。。。
作为连续的操作,我该怎么做?
我已经看了执行模式,但这不是这样做
你好,巴斯蒂安

fae0ux8s

fae0ux8s1#

最简单的解决方案是将两个流分离到单个作业中,然后逐个执行它们。

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();

相关问题