作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试生成一个 PCollection<C>
(使用 C 类型的元素),使用变压器从 2 个输入:一个 PCollection<A>
(包含类型 A 的元素),第二个是 PCollection<C>
.
基本上,转换器会考虑存储在 PCollection<A>
中的元素。并用 PCollection<C>
上的元素进行一些计算以这种方式,最终它将生成一个包含新元素的新 PCollection 作为输出。
那么,有没有办法使用 PCollectionTuple
来实现这个场景? ,或ParDo
超过PCollectionTuple
仅产生一个输出 PCollection
,或使用 Google Dataflow SDK 的任何其他建议吗?
最佳答案
在 Dataflow 中加入 PCollection 的方法有多种。对于您的情况, PCollection<C>
中的每个元素需要访问 PCollection<A>
中的多个元素,您可以使用侧面输入。请参阅View转换以获取更多信息。
例如,假设 pCollectionA 很小:
PCollectionView<List<A>> view = View.asList(pCollectionA);
PCollection<C> output = pCollectionC.apply(ParDo.withSideInputs(view).of(
new DoFn<C,C>() {
public void processElement(ProcessContext c) {
c.output(...combine c.element() and c.sideInput(view)...);
}
});
如果您只需要访问 pCollectionA 中每个元素的部分内容,则可以使用 View.asMultimap 代替,这将允许在 pCollectionA 中进行点查找
关于java - 如何从谷歌数据流管道中的多个输入PCollection生成一个输出PCollection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37825173/
我是一名优秀的程序员,十分优秀!