我使用的是apachebeam的pythonsdk。在
我有一些转换步骤,希望使它们具有可重用性,这就要求我编写一个如下所示的自定义复合转换:
class MyCompositeTransform(beam.PTransform):
def expand(self, pcoll, arg1, kwarg1=u'default'):
result = (pcoll
| 'Step 1' >> beam.Map(lambda f: SomeFn(f, arg1))
| 'Last step' >> beam.Map(lambda f: SomeOtherFn(f, kwarg1))
)
return result
我想要的是提供一些额外的参数arg1
和{
有人能给我指一下方向吗?在
一般来说,您不能像您所描述的那样在运行时向转换动态传递附加参数。当您运行构造管道的控制器程序时,管道的结构被序列化、发送,然后在无权访问您的控制器程序的工作组上并行执行,它们只获得
ParDos
的结构和实际代码。在动态参数化执行的一种方法是提供额外的数据作为额外的输入,例如创建另一个用参数值填充的} 。在
PCollection
,然后将其与主PCollection
连接。例如使用side-inputs,或^{如果您正在查看} ,但不确定它们是否在pyton或非数据流运行器中可用。在
Cloud Dataflow
,那么您可能会考虑使用管道templates with ^{相关问题 更多 >
编程相关推荐