Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Apache Beam管道中对一个PCollection同时应用多个PTTransforms_Python_Apache Beam - Fatal编程技术网

Python 在Apache Beam管道中对一个PCollection同时应用多个PTTransforms

Python 在Apache Beam管道中对一个PCollection同时应用多个PTTransforms,python,apache-beam,Python,Apache Beam,我正在尝试创建一个梁管道,以便在一个PCollection上同时应用多个ParDo变换,并在列表中收集和打印所有结果。到目前为止,我经历了一个循序渐进的过程,比如第一次帕多,然后第二次帕多。 以下是我为本期准备的一个示例: import apache_beam as beam from apache_beam.options.pipeline_options import PipelineOptions p = beam.Pipeline(options=PipelineOptions())

我正在尝试创建一个梁管道,以便在一个PCollection上同时应用多个ParDo变换,并在列表中收集和打印所有结果。到目前为止,我经历了一个循序渐进的过程,比如第一次帕多,然后第二次帕多。 以下是我为本期准备的一个示例:

import apache_beam as beam

from apache_beam.options.pipeline_options import PipelineOptions

p = beam.Pipeline(options=PipelineOptions())

class Tr1(beam.DoFn):
  def process(self, number):
    number = number + 1
    yield number

class Tr2(beam.DoFn):
  def process(self, number):
    number = number + 2
    yield number

def pipeline_test():

  numbers =  p | "Create" >> beam.Create([1])
  tr1 = numbers  | "Tr1" >> beam.ParDo(Tr1())
  tr2 = numbers  | "Tr2" >> beam.ParDo(Tr2())

  tr1 | "Print1" >> beam.Map(print)
  tr2 | "Print2" >> beam.Map(print) 

def main(argv):
  del argv

  pipeline_test()

  result = p.run()
  result.wait_until_finish()
if __name__ == '__main__':
  app.run(main)

转换和元素的调度由用于运行管道的运行程序管理

运行程序通常会尝试优化图形,并且可能会按顺序或并行运行某些任务

在您的例子中,Tr1和Tr2都是无状态的,并且应用于相同的输入。在这种情况下,runner通常在同一台机器上为相同的元素顺序运行它们。 注意,runner仍将并行运行不同的元素

应该是这样的

线程1 ele1->Tr1 ->Tr2

线程2 ele1->Tr1 ->Tr2


我不建议依赖管道不同部分的预期并行性,因为它取决于运行程序。

您能在看到PTTransforms按顺序运行的地方附上数据流作业的图表吗?