java - 如何创建每隔一段时间进入 Apache Beam 管道的虚假数据流?

标签 java testing apache-flink apache-beam flink-streaming

我正在尝试创建小型 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帮助我了解如何使用此类进行测试。

关于java - 如何创建每隔一段时间进入 Apache Beam 管道的虚假数据流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60742385/

相关文章:

java - 家庭作业 Java 网络编程

apache-flink - 除了使用 .startNewChain() 之外,还有其他方法可以在集群 GUI 中拆分 Flink 任务吗?

java - 在 Flink SQL Windows 中使用带有延迟的事件时间

ruby-on-rails - 如何测试 Rails 中的文件上传?

android - 如何在 Espresso 中获取 TextView 的实际颜色值

ruby-on-rails - 使用 Rspec/Factory Girl/Rails 测试注册确认

join - 在 Apache Flink 中合并两个流,无论窗口时间如何

java - 从另一个 Java 小程序访问 Java 小程序

java - 如何通过 Eclipse Selection Service 处理来自不同提供商的选择,同时保持松散耦合?

java - 在一个Activity中组织多个Fragment接口(interface)