有人可以澄清使用时的预期行为吗save_main_session
和导入的自定义模块__main__
。我的 DataFlow 管道导入 2 个非标准模块 - 一个通过requirements.txt
另一个通过setup_file
。除非我将导入移至使用它们的函数中,否则我会不断收到导入/酸洗错误。示例错误如下。从文档中,我假设设置save_main_session
将有助于解决这个问题,但事实并非如此(请参见下面的错误)。所以我想知道我是否错过了什么或者这种行为是设计使然的。当放入函数中时,相同的导入工作正常。
Error:
File "/usr/lib/python2.7/pickle.py", line 1130, in find_class
__import__(module)
ImportError: No module named jmespath
https://cloud.google.com/dataflow/faq#how-do-i-handle-nameerrors https://cloud.google.com/dataflow/faq#how-do-i-handle-nameerrors https://beam.apache.org/documentation/sdks/python-pipeline-dependencies/ https://beam.apache.org/documentation/sdks/python-pipeline-dependencies/
何时使用--save_main_session
:
你可以设置--save_main_session
管道选项True
。这将导致全局命名空间的状态被腌制并加载到 Cloud Dataflow Worker 上
最适合我的设置是dataflow_launcher.py
坐在项目根目录下setup.py
。它唯一做的就是导入管道文件并启动它。使用setup.py
处理你所有的依赖关系。这是迄今为止我找到的最好的例子。
https://github.com/apache/beam/tree/master/sdks/python/apache_beam/examples/complete/juliaset https://github.com/apache/beam/tree/master/sdks/python/apache_beam/examples/complete/juliaset
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)