代码之家  ›  专栏  ›  技术社区  ›  Yura Taras

如何使用pythonapi将文件嵌入到dataflow作业中

  •  0
  • Yura Taras  · 技术社区  · 6 年前

    我正在用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作业中,以便它们在工作节点上可用。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Yura Taras    6 年前

    setup.py :

    include_package_data=True,
    

    验证了它的工作。