google-cloud-dataflow - 在 Apache Beam 中添加 2 Dofn 之间的依赖关系
问题描述
有什么方法可以在 2 个 Dofn 之间创建依赖关系,以便它等待第一个 Dofn 方法完成然后运行第二个 Dofn 方法。只是想知道我们如何实现这个用例。
解决方案
可能有一种更清洁的方法可以做到这一点,但我注意到执行以下操作将达到您想要的效果:
将第一个 DoFn 的输出路由到一个计数器,然后将该计数器的输出作为侧面输入传递到第二个 DoFn 的 ParDo
class DoFn2(apache_beam.DoFn):
def process(self, element, count_do_fn_1_output, *args, **kwargs):
# ...
do_fn_1_output = do_fn_1_input | 'do fn 1' >> apache_beam.ParDo(DoFn1())
count_do_fn_1_output = (
do_fn_1_output
| 'count do_fn_1_output' >> apache_beam.combiners.Count.Globally())
do_fn_2_output = (
do_fn_1_output
| 'do fn 2' >> apache_beam.ParDo(DoFn2(), count_do_fn_1_output=apache_beam.pvalue.AsSingleton(count_do_fn_1_output)))
推荐阅读
- mysql - 在mysql中按多列选择多行
- php - 允许 PHP 覆盖系统文件
- deployment - 在哪里设置 API KEY 以部署在 IBM Bluemix Cloud Foundry 上
- matlab - 具有计算机视觉工具箱“视差”功能的惩罚参数半全局匹配
- android - RecyclerView scoll 滞后
- android - 未为 android.media.tv.action.INITIALIZE_PROGRAMS 发送 BroadcastReceiver 通知
- reactjs - reactjs中组件之间的交互
- postgresql - rds 在 postgres 9.6.6 上运行,而 yum update 将导致已安装版本更新到 9.6.8
- java - JNIEnv_::DeleteGlobalRef - Linux 中的核心转储
- ubuntu-16.04 - gdlib-config Ubuntu 16.04 / Ubuntu 18.04