[英]Pipeline code spanning multiple files in Apache Beam / Dataflow
經過長時間的搜索,我還沒有找到跨越多個文件的 Dataflow/Beam 管道示例。 Beam 文檔確實建議了一個文件結構(在“多個文件依賴項”部分下),但他們提供的 Juliaset 示例實際上只有一個代碼/源文件(以及調用它的主文件)。 基於 Juliaset 示例,我需要一個類似的文件結構:
juliaset/__init__.py
juliaset/juliaset.py # actual code
juliaset/some_conf.py
__init__.py
juliaset_main.py
setup.py
現在我想從juliaset/juliaset.py
import .some_conf
,它在本地運行時有效,但在 Dataflow 上運行時給我一個錯誤
INFO:root:2017-12-15T17:34:09.333Z: JOB_MESSAGE_ERROR: (8cdf3e226105b90a): Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/dataflow_worker/batchworker.py", line 706, in run
self._load_main_session(self.local_staging_directory)
File "/usr/local/lib/python2.7/dist-packages/dataflow_worker/batchworker.py", line 446, in _load_main_session
pickler.load_session(session_file)
File "/usr/local/lib/python2.7/dist-packages/apache_beam/internal/pickler.py", line 247, in load_session
return dill.load_session(file_path)
File "/usr/local/lib/python2.7/dist-packages/dill/dill.py", line 363, in load_session
module = unpickler.load()
File "/usr/lib/python2.7/pickle.py", line 858, in load
dispatch[key](self)
File "/usr/lib/python2.7/pickle.py", line 1133, in load_reduce
value = func(*args)
File "/usr/local/lib/python2.7/dist-packages/dill/dill.py", line 767, in _import_module
return getattr(__import__(module, None, None, [obj]), obj)
ImportError: No module named package_name.juliaset.some_conf
一個完整的工作示例將不勝感激!
您能否驗證包含以下結構的setup.py
:
import setuptools
setuptools.setup(
name='My Project',
version='1.0',
install_requires=[],
packages=setuptools.find_packages(),
)
像from juliaset.juliaset import SomeClass
一樣導入你的模塊
當您調用 Python 腳本時,請使用python -m juliaset_main
(不帶 .py)
不確定你是否已經嘗試過這個,但只是為了確定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.