我正在用Python编写一个批处理BEAM作业,然后用googledataflow运行它。我想将我的Python代码的一部分提取到.json文件中,并将其嵌入到Python包中—就像在Java中一样。
我创造了
MANIFEST.in
include *.json
还补充了
data_files
setup.py
data_files=[
('.', ['config.json'])
],
setup.py sdist
和
setup.py bdist
我确认文件包含在包中。
我还有一个加载json文件的代码:
CONFIG_PATH = Path(__file__).parent / 'config.json'
with path.open() as fp:
json.load(fp)
当我使用DirectRunner运行模块时,会加载文件get。但是,当我尝试将它提交给DataFlow时,它失败了,因为它找不到
config.json
. 我添加了遍历文件系统的调试日志记录,我可以看到这个文件在中不存在
/usr/local/lib/python2.7/dist-packages/
在工作节点上,安装了所有必需的lib。
我查阅了Beam文档,包括:
https://beam.apache.org/documentation/sdks/python-pipeline-dependencies/
我也找不到一种推荐的方法来将非python文件打包到Beam作业中,以便它们在工作节点上可用。