从PCollections获取列表

时间:2018-06-23 16:04:23

标签: java google-cloud-platform pipeline dataflow

我想要Pcollection中的列表值。

PCollection<List<Integer>> lst =    bqT2.apply(ParDo.of(new 
UserId()));  // line 1
List myList = lst.getAll(); // line 2 

但没有“ getAll()”功能

我发现了类似的东西

    List<String> dummylist = Arrays.asList(dummy);
    DoFnTester<String,String> fnTester = DoFnTester.of(new AAA(mapview));
    fnTester.setSideInputInGlobalWindow(mapview, csvlist);
    //dummylines.apply(ParDo.of(fnTester));
    List<String> results = fnTester.processBatch(dummylist);

但是我找不到任何使用“ DoFnTester”功能来获取列表项的方法。

有什么方法可以从PCollection中列出吗?

为了详细说明,我有两个PCollections。

PCollection   p1 = pipeline.apply("",
BigQueryIO.read().fromQuery("SELECT * from myTable where userid in " +  lst + ));

注意:第一个来自第1行

不确定Google数据流是否不支持简单用例。

2 个答案:

答案 0 :(得分:1)

由于数据流管道的分布式特性,无法直接从PCollection访问数据。

执行“组合”转换,而不是转换为列表,而是将多个整数的PCollection转换为包含SQL查询中所需的单个列表元素的PCollection,并使用以前的PCollection与BigQuery读取查询链接到另一个转换(整数列表)。

答案 1 :(得分:0)

如果列表适合存储,则

apache_beam.transforms.combiners.ToList可以为您工作。

beam.combiners.ToList()是Python版本。