单元测试采用侧输入的数据流/ apache波束管道

问题描述 投票:0回答:1

使用Dataflow 2.1 sdk

        <dependency>
            <groupId>com.google.cloud.dataflow</groupId>
            <artifactId>google-cloud-dataflow-java-sdk-all</artifactId>
            <version>[2.1.0, 2.99)</version>
        </dependency>

根据this文件,setSideInputInGlobalWindow应该可用。但我只看到下面两个相关的功能:enter image description here

以下是我的完整代码:

DoFnTester<EventItem,EventItem> fnTester = DoFnTester.of(myDoFn);
    TestPipeline pipeline = TestPipeline.create();

TableRow row= new TableRow();
        atr.set("a", 7);
        atr.set("q", new ArrayList<String>() {{ add("video_referrer"); add("from_homepage");}});

PCollectionView<TableRow> sideInput =  (PCollectionView<TableRow>) pipeline.apply(Create.of(Arrays.asList(atr)));
        Iterable<TableRow> sidVal = Arrays.asList(atr);
        fnTester.setSideInput(sideInput, sidVal); //error on this line

        List<Foo> testOutputs = fnTester.processBundle(Arrays.asList(testInput));

我看到setSideInput(PCollectionView<T> sideInput, BoundedWindow window, T value)功能here。但在这种情况下如何获得BoundedWindow任何想法我在这里缺少什么,谢谢。

apache-beam dataflow
1个回答
0
投票

您可以尝试使用GlobalWindow.INSTANCE,但通常不推荐使用DoFnTester,建议的方法是始终使用TestPipeline和PAssert。

© www.soinside.com 2019 - 2024. All rights reserved.