其他分享
首页 > 其他分享> > 数据流/ Apache Beam:管理自定义模块依赖项

数据流/ Apache Beam:管理自定义模块依赖项

作者:互联网

我有一个使用Apache Beam的.py管道,该管道导入了另一个模块(.py),这是我的自定义模块.
我有一个像这样的结构:

├── mymain.py
└── myothermodule.py

我将myothermodule.py导入mymain.py中,如下所示:

import myothermodule

当我在DirectRuner上本地运行时,我没有问题.
但是,当我使用DataflowRunner在数据流上运行它时,出现一个错误消息:

ImportError: No module named myothermodule

因此,我想知道在数据流上运行作业时是否希望找到该模块该怎么办?

解决方法:

远程运行管道时,还需要使远程工作者上的所有依赖项都可用.
为此,您应该将模块文件放入Python包中,方法是将其放在包含__init__.py文件的目录中并创建setup.py.它看起来像这样:

├── mymain.py
├── setup.py
└── othermodules
    ├── __init__.py
    └── myothermodule.py

然后像这样导入它:

from othermodules import myothermodule

然后,您可以使用命令行选项–setup_file ./setup.py运行管道.

最小的setup.py文件如下所示:

import setuptools

setuptools.setup(packages=setuptools.find_packages())

整个设置记录为here.

使用此示例的完整示例可以找到here.

标签:apache-beam,python,google-cloud-dataflow
来源: https://codeday.me/bug/20191108/2009481.html