我正在尝试创建一个小型的apachebeam流程序来 test想法,我认为对于我来说,获取数据最简单的方法就是使用像创建.of制造假数据。这样,我就不必设置比需要更多的内容,比如设置一个GCP发布/订阅主题作为源并发布给它。
问题是我想尝试一些基于时间的东西,比如打开窗口,使用状态和计时器。我能把这些放在一起:
public class TestPipeline {
public static void main(String[] args) {
PipelineOptions options = PipelineOptionsFactory.create();
Pipeline p = Pipeline.create(options);
p.apply(Create.of(1, 2, 3))
.apply(ParDo.of(new DoFn<Integer, String>() {
@ProcessElement
public void processElement(ProcessContext c) {
c.output(c.element().toString());
}
}))
.apply(TextIO.write().to("myfile.txt"));
p.run().waitUntilFinish();
}
}
这实现了我在 pipeline 开始时发送三个数据段的目标,但它同时发送了所有数据。我希望我可以设置它每10秒发送一条数据,等等。
我从Apache Flink学习了这个教程(https://ci.apache.org/projects/flink/flink-docs-release-1.10/getting-started/walkthroughs/datastream_api.html)这是我努力完成的一个例子。我在那篇教程中深入研究了代码,但我无法确切地找出Flink框架的哪一部分促成了这一点。