提问者:小点点

如何在DataFlow上使用自定义版本的apache光束pythonSDK?


当前版本的Apache Beam不支持google spanner的类型代码11(json),因为它使用的google-cloud-spanner版本落后于当前版本的两个主要版本。因此,我更新了自己的版本来这样做——还没有完全弄清楚如何在Github上进行适当的PR或运行测试。

无论哪种方式,这都需要一段时间。我听说有一种方法可以在DataFlow上指定自定义的Apache光束SDK,但那是3年前的事了,并不具体。它仍然可能吗?我需要什么样的文件来保存SDK在-zip, tar,tar.gz中?该存档中需要哪些文件夹?apache_beam,apache_beam-2.34.0.dist-info?只是apache_beam中的文件?我只是在PipelineOptions中的sdk-place="gs://bucket"中设置选项吗?

谢谢。


共1个答案

匿名用户

构建容器后,您需要确保您使用的是运行器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。