如何创建每隔一段时间进入 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 框架的哪一部分实现了这一点。
查看 SyntheticBoundedSource
和 SyntheticUnboundedSource
类!
它们可以让你参数化很多关于数据生成的参数,从 key/value 大小,记录发射之间的延迟等。你可以使用 SyntheticSourceOptions
选项界面对它们进行参数化,所以这也是一个很好的地方检查可能的自定义设置。
我最终使用了 TestStream
class。我发现 UnBoundedSource
class 对于我的用例来说太难扩展了。博客 post https://beam.apache.org/blog/2016/10/20/test-stream.html 帮助我了解了如何使用此 class 进行测试。
我正在尝试创建小型 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 框架的哪一部分实现了这一点。
查看 SyntheticBoundedSource
和 SyntheticUnboundedSource
类!
它们可以让你参数化很多关于数据生成的参数,从 key/value 大小,记录发射之间的延迟等。你可以使用 SyntheticSourceOptions
选项界面对它们进行参数化,所以这也是一个很好的地方检查可能的自定义设置。
我最终使用了 TestStream
class。我发现 UnBoundedSource
class 对于我的用例来说太难扩展了。博客 post https://beam.apache.org/blog/2016/10/20/test-stream.html 帮助我了解了如何使用此 class 进行测试。