如何在DataFlow上使用自定义版本的apachebeam-python SDK



当前版本的Apache Beam不支持谷歌扳手的类型代码11(json(,因为它使用的是谷歌云扳手的一个版本,该版本落后于当前版本的两个主要版本。因此,我更新了自己的版本——还没有完全弄清楚如何在Github上进行适当的PR或运行测试。

不管怎样,都需要一段时间。我听说有一种方法可以在DataFlow上指定一个自定义的Apache beam SDK,但那是3年前的,并不具体。还有可能吗?我需要什么样的文件才能将SDK保存在.zip、tar、tar.gz中?存档中需要哪些文件夹?apache_beam,apache_beam-2.34.0-dist-info?只是apache_beam中的文件?我只是在sdk location=";gs://bucket";在PipelineOptions中?

谢谢。

构建容器后,您需要确保使用的是runner V2,还需要像这样设置sdk_container_image标志(其他标志与wordcount相关,可能与您的管道无关(:

python -m apache_beam.examples.wordcount 
--input=INPUT_FILE 
--output=OUTPUT_FILE 
--project=PROJECT_ID 
--region=REGION 
--temp_location=TEMP_LOCATION 
--runner=DataflowRunner 
--disk_size_gb=DISK_SIZE_GB 
--experiments=use_runner_v2 
--sdk_container_image=$IMAGE_URI

在Dataflow上运行管道之前,您应该通过在本地运行一个小作业来确保容器正常工作,如下所示:

python path/to/my/pipeline.py 
--runner=PortableRunner 
--job_endpoint=embed 
--environment_type=DOCKER 
--environment_config=IMAGE_URI 
--input=INPUT_FILE 
--output=OUTPUT_FILE

请看一下https://cloud.google.com/dataflow/docs/guides/using-custom-containers了解更多详细信息。

最新更新