Google cloud dataflow Apache Beam中的侧输入与正常构造函数参数

Google cloud dataflow Apache Beam中的侧输入与正常构造函数参数,google-cloud-dataflow,apache-beam,broadcast,dataflow,data-processing,Google Cloud Dataflow,Apache Beam,Broadcast,Dataflow,Data Processing,我有一个关于ApacheBeam上下文中的侧输入和广播的一般性问题。processElement期间计算所需的任何其他变量、列表和映射是否需要作为侧输入传递?如果它们作为DoFn的普通构造函数参数传递,是否可以?例如,如果我有一些固定的非计算值变量常量,比如开始日期、结束日期,我想在processElement的每元素计算期间使用这些变量。现在,我可以分别从这些变量中生成singleton PCollectionView,并将它们作为边输入传递给DoFn构造函数。但是,与其这样做,我是否可以将这

我有一个关于ApacheBeam上下文中的侧输入和广播的一般性问题。processElement期间计算所需的任何其他变量、列表和映射是否需要作为侧输入传递?如果它们作为DoFn的普通构造函数参数传递,是否可以?例如,如果我有一些固定的非计算值变量常量,比如开始日期、结束日期,我想在processElement的每元素计算期间使用这些变量。现在,我可以分别从这些变量中生成singleton PCollectionView,并将它们作为边输入传递给DoFn构造函数。但是,与其这样做,我是否可以将这些常量作为普通构造函数参数传递给DoFn?我在这里遗漏了什么微妙的东西吗

就代码而言,我应该在什么时候做:


当您调用新MyFilter的pipeline.applyParDo.ofnew MyFilter时,公共静态类MyFilter扩展了DoFn。。。DoFn在用于启动管道的主程序中实例化。然后将其序列化并传递给运行程序执行。然后,运行程序决定在何处执行它,例如,在100个虚拟机的机队上,每个虚拟机都将接收自己的代码副本和序列化数据。如果成员变量是可序列化的,并且您没有在执行时对其进行变异,那么应该可以,DoFn将在每个节点上进行反序列化,并填充所有字段,并按预期执行。但是,您无法控制实例的数量或它们的生命周期,因此风险自负

pcollection和side输入的好处是,您不局限于静态值,因此对于两个简单的不可变值,您应该可以