我使用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
答案 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。