如何在数据流/光束中将PCollection <List <String >>转换为PCollection <String>

PUG*_*PUG 3 google-cloud-dataflow apache-beam

我有一个用例,需要T从DoFn 输出多个。所以DoFn函数返回一个PCollection<List<T>>。我想将其转换为PCollection<T>以便稍后在管道中进行过滤,例如:

PCollection<T> filteredT = filterationResult.apply(Filter.byPredicate(p -> p.equals(T) == T));
Run Code Online (Sandbox Code Playgroud)

目前,我能想到的最好的方法是,List<T>ParDoKV<String,List<T>>用相同键返回的函数返回每个项目。然后在管道中,我可以执行以下操作以合并结果:

filterationResult.apply("Group", GroupByKey.<String, List<T>>create())
Run Code Online (Sandbox Code Playgroud)

或者可以拨打我c.output(T)从DOFN(这里cProcessContext对象传入)多次?

Ken*_*les 7

你可以调用c.output(T)DoFn多次。

还有一个库转换,Flatten.iterables()但是在这种情况下您不需要它。