当前位置: 首页 > 知识库问答 >
问题:

如何运行Python谷歌云数据流作业与自定义Docker图像?

洪高阳
2023-03-14

我想运行一个Python谷歌云数据流作业与自定义Docker图像。

根据文件,这应该是可能的:https://beam.apache.org/documentation/runtime/environments/#testing-自定义图像

为了尝试此功能,我使用此公共repo中的文档中的命令行选项设置了基本wordcount示例管道https://github.com/swartchris8/beam_wordcount_with_docker

我可以在本地使用apachebem/python3运行PortableRunner的wordcount作业。6_sdk图像,但使用Dataflow我无法做到这一点。

我正在尽可能密切地关注PortableRunner的文档,我的参数是:

python -m wordcount --input wordcount.py \
--output counts \
--runner=PortableRunner \
--job_endpoint=embed \
--environment_config=apachebeam/python3.6_sdk

对于数据流:

python -m wordcount --input wordcount.py \
--output gs://healx-pubmed-ingestion-tmp/test/wordcount/count/count \\
--runner=DataflowRunner \
--project=healx-pubmed-ingestion \
--job_name=dataflow-wordcount-docker \
--temp_location=gs://healx-pubmed-ingestion-tmp/test/wordcount/tmp \
--experiment=beam_fn_api \
--sdk_location=/Users/chris/beam/sdks/python/container/py36/build/target/apache-beam.tar.gz \
--worker_harness_container_image=apachebeam/python3.6_sdk \
--region europe-west1 \
--zone europe-west1-c

有关完整的详细信息,请参阅链接的回购。

我在这里做错了什么,或者数据流中的Python作业不支持此功能?

共有2个答案

姚树
2023-03-14

不幸的是,Dataflow目前使用它自己的(不兼容的)辅助角色容器,但是对此的修复正在积极进行中。

华浩壤
2023-03-14

您应该能够将自定义容器与Dataflow一起使用,并具有--试验=--use_runner_v2,默认情况下,该容器将很快启用。示例命令行可能看起来像:

pip install apache-beam[gcp]==2.24.0
python -m apache_beam.examples.wordcount \
--output gs://healx-pubmed-ingestion-tmp/test/wordcount/ \
--runner=DataflowRunner \
--project=healx-pubmed-ingestion \
--region europe-west1 \
--temp_location=gs://healx-pubmed-ingestion-tmp/test/wordcount/tmp \
--worker_harness_container_image=apache/beam_python3.6_sdk:2.24.0 \
--experiment=use_runner_v2
                           

要自定义容器,请遵循https://beam.apache.org/documentation/runtime/environments/#customizing-container-images.说明

 类似资料:
  • 我们的Google Cloud数据流管道程序调用了一些动态链接到*的库。所以要运行它,我需要设置linux环境变量LD_LIBRARY_PATH。有一种方法可以做到这一点:https://groups.google.com/forum/#!主题/综合。java。程序员/LOu18 OWAVM,但我想知道是否有一种方法可以在执行管道之前使用一些运行shell脚本的作业来实现这一点?

  • 浏览了Google云数据流文档后,我的印象是worker VM运行一个特定的预定义Python 2.7环境,没有任何改变的选项。是否可以为工作人员提供自定义VM映像(使用库、特定应用程序需要的外部命令构建)。可以在Gcloud数据流上运行Python 3吗?

  • 我正在运行数据流作业从气流。我需要说我是气流的新手。数据流(从气流运行)正在成功运行,但我可以看到气流在获得工作状态时遇到了一些问题,我收到了无限的消息,比如: 谷歌云数据流作业尚不可用。。 以下是将所有步骤添加到数据流后的日志(我将{project ectID}和{jobID}放在它所在的位置): 你知道这是什么原因吗?我找不到与此问题相关的任何解决方案。我应该提供更多信息吗? 这是我在DAG中

  • 当我运行Dataflow作业时,它会将我的小程序包(setup.py或requirements.txt)上传到Dataflow实例上运行。 但是数据流实例上实际运行的是什么?我最近收到了一个stacktrace: 但从理论上讲,如果我在做,这意味着我可能没有运行这个Python补丁?你能指出这些作业正在运行的docker图像吗,这样我就可以知道我使用的是哪一版本的Python,并确保我没有在这里找

  • 我已经使用Google云数据流SDK编写了一个流式管道,但我想在本地测试我的管道。我的管道从Google Pub/Sub获取输入数据。 是否可以使用DirectPipelineRunner(本地执行,而不是在Google云中)运行访问发布/订阅(pubsubIO)的作业? 我在以普通用户帐户登录时遇到权限问题。我是项目的所有者,我正在尝试访问发布/子主题。

  • 我正在尝试使用谷歌云数据流将谷歌PubSub消息写入谷歌云存储。PubSub消息采用json格式,我要执行的唯一操作是从json到parquet文件的转换。