数据流/ 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