以下代码:
def get_pipeline(workers):
pipeline_options = PipelineOptions(['--direct_num_workers', str(workers)])
return beam.Pipeline(options=pipeline_options,
runner=fn_api_runner.FnApiRunner(
default_environment=beam_runner_api_pb2.Environment(
urn=python_urns.SUBPROCESS_SDK,
payload=b'%s -m apache_beam.runners.worker.sdk_worker_main'
% sys.executable.encode('ascii'))))
with get_pipeline(4) as pipeline:
_ = (
pipeline
| 'ReadTestData' >> beam.io.ReadFromParquet(input_files, columns=all_columns)
| "write" >> beam.io.WriteToText("/tmp/txt2")
)
仅使用4个可用工作器中的一个,并仅生成一个大输出文件(即使输入文件很多)。
如何强制Beam管道并行工作,即如何强制每个输入文件由不同的工作人员分别处理?
答案 0 :(得分:0)
您正在使用哪个版本的Beam?
我在Beam 2.16.0上遇到了同样的问题,但是2.17.0版本似乎具有预期的行为。
您可能想尝试使用此版本,同时保持原样。