在不同集合中多次使用数据集,而无需多次填充数据集

  • 本文关键字:数据集 填充 集合 apache-flink
  • 更新时间 :
  • 英文 :


有没有办法对同一个数据集执行不同的收集,而无需在 Apache Flink 中多次填充数据集?我只想填充数据集一次并对其应用几种不同的集合。

下面的代码,似乎读取了两次我想避免的数据文件。

myDataset = env.readCsvFile(..);
DataSet<Tuple3< >> test1 =  myDataset.map(new map1()).filter(new filter1());
DataSet<Tuple3< >> test2 =  myDataset.map(new map2()).filter(new filter2());
List< Tuple3<>> List1 = test1.collect();
List< Tuple3<>> List2 = test2.collect();
// ...

您无法使用 collect() 来实现此目的。需要添加不触发作业执行的接收器,并显式启动程序。例如,您可以将结果写入文件:

myDataset = env.readCsvFile(..);
DataSet<Tuple3< >> test1 =  myDataset.map(new map1()).filter(new filter1());
DataSet<Tuple3< >> test2 =  myDataset.map(new map2()).filter(new filter2());
test1.writeAsCsv(<filePath1>);
test2.writeAsCsv(<filePath2>);
env.execute(); // trigger execution

有关可用接收器,请参阅文档:https://ci.apache.org/projects/flink/flink-docs-release-0.10/apis/programming_guide.html#data-sinks

之后,您需要手动将结果集从<filePathX>读取到客户端应用程序中。

相关内容

  • 没有找到相关文章

最新更新