【问题标题】:Can I run a setup script when submitting a Dataflow job before running the pipeline?在运行管道之前提交 Dataflow 作业时,我可以运行设置脚本吗?
【发布时间】:2017-12-01 22:08:44
【问题描述】:

我正在使用 Apache Beam Python SDK 2.0.0 来定义管道,并尝试在 Google Cloud Dataflow 上运行它。

代码使用 gcs-oauth2-boto-plugin 进行身份验证,但需要通过 apt-get 安装一些软件包[1]。所以我需要在执行管道之前运行这段代码sudo apt-get install gcc python-dev python-setuptools libffi-dev libssl-dev

如何告诉数据流在执行作业之前在 VM 中执行此命令?我知道我们可以为 Compute Engine 指定启动脚本,但在 Dataflow 中这是在后台创建的,我可以在 Dataflow 中提交作业时做类似的事情吗?

[1]https://cloud.google.com/storage/docs/xml-api/gspythonlibrary

【问题讨论】:

    标签: python google-cloud-platform google-cloud-dataflow


    【解决方案1】:

    对于 Python 依赖项

    您可以在提交管道时传递 --requirements_file 参数。该文件应包含package==version 的行分隔列表,就像pip freeze 命令的输出一样。

    对于非 Python 依赖项

    在这种情况下,您需要将 --setup_file 参数传递给您的管道。在setup.py 文件中,添加对setuptools.setup 的调用,在其中传递cmdclass 参数以及实现安装逻辑的类。 Apache Beam 存储库包含一个 example of this

    有关更多信息,请查看Managing Pipeline Dependencies

    【讨论】:

    • 感谢您的帮助。我需要通过 apt-get 安装软件包。我知道我可以通过requirements.txt,但是如何在提交 Dataflow 作业时通过设置脚本通过apt-get 安装包?
    • 在官方数据流文档中,它显示了如何做到这一点:cloud.google.com/dataflow/pipelines/…
    猜你喜欢
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多