在运行管道之前提交数据流作业时,我可以运行安装脚本吗?

时间:2017-06-28 13:43:26

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

我使用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

如何在执行作业之前告诉Dataflow在VM中执行此命令?我知道我们可以为计算引擎指定一个启动脚本,但是在Dataflow中这是创建的,我可以在Dataflow中提交作业时做类似的事情吗?

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

1 个答案:

答案 0 :(得分:1)

对于Python依赖性

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

对于非Python依赖项

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

有关详情,请查看Managing Pipeline Dependencies