![](/img/trans.png)
[英]SlidingWindows for slow data (big intervals) on Apache Beam
[英]How do I create a stream of fake data entering an Apache Beam pipeline at intervals of time?
我正在尝试创建小型 Apache Beam 流程序来测试想法,我认为获取数据最简单的方法是使用像Create.of
这样的框架结构来创建假数据。 这样,我就不必进行过多的设置,例如将 GCP Pub/Sub 主题设置为源并发布到它。
问题是我想尝试基于时间的东西,比如窗口和使用状态和计时器。 我能够把它放在一起:
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();
}
}
这实现了我在管道开始时发送三段数据的目标,但它同时发送了所有数据。 我更喜欢是否可以将其设置为每 10 秒发送一次数据,等等。
我从 Apache Flink ( https://ci.apache.org/projects/flink/flink-docs-release-1.10/getting-started/walkthroughs/datastream_api.html ) 中学习了本教程,其中显示了我正在尝试的示例去完成。 我深入研究了那个教程中的代码,但我无法确切地找出 Flink 框架的哪一部分实现了这一点。
我最终使用了TestStream
类。 我发现UnBoundedSource
类对于我的用例来说太难扩展了。 博客文章https://beam.apache.org/blog/2016/10/20/test-stream.html帮助我了解如何使用此类进行测试。
查看SyntheticBoundedSource
和SyntheticUnboundedSource
类!
它们让您可以对数据生成进行很多参数化,从键/值大小、记录发射之间的延迟等。您可以使用SyntheticSourceOptions
选项接口对它们进行参数化,因此这也是检查可能的自定义的好地方。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.