2017-12-15 6 views
0

長時間の検索の後、いくつかのファイルにまたがるDataflow/Beamパイプラインの例は見つかりませんでした。ビームドキュメントはsuggest a file structure(「複数のファイルの依存関係」の項を参照)を実行しますが、与えられたジュリアスセットの例では、a single code/sourceファイル(およびそれを呼び出すmain file)が与えられています。Apache Beam/Dataflowの複数のファイルにまたがるパイプラインコード

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したい、ローカルで実行したときに動作しますが、データフロー

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 

A上で実行したときに私にエラーを与える:Juliaset例に基づいて、私は同様のファイル構造を必要とします完全に動作する例は非常に高く評価されるでしょう!

+0

質問については不明です。あなたは実際の例を求めています。あなたが指しているジュリアセットは1つです。それともあなたのために働いていないと言っていますか?メインファイルのdocごとに呼びますか? ( '--setup_file'を含む) – de1

+0

Juliasetの例はそのままで動作しますが、ソースコードは基本的にすべてが単一のファイル(juliaset/juliaset.py)にあります。 juliaset/src1.pyやjuliaset/src2.pyなどのいくつかのソースファイルにプログラムを分割したいと思います。また、juliasetの例はapache_beamパッケージの中に埋め込まれています(importは "apache_beam.examples.complete.juliaset.juliaset import juliaset"のようになります)。だから私は、多くのソースファイル、完全に実用的なサンプルを要求していました。別のプロジェクト/パッケージに埋め込まれていない「スタンドアロン」バージョンが望ましいです。 –

+0

@Mattias Arroどのように解決しましたか? –

答えて

0

あなたのような構造を含むあなたのsetup.py確認することができます:

import setuptools 

setuptools.setup(
    name='My Project', 
    version='1.0', 
    install_requires=[], 
    packages=setuptools.find_packages(), 
) 

from juliaset.juliaset import SomeClass

のようなあなたのモジュールをインポートし、あなたはPythonスクリプトを呼び出すときに、(の.pyなし)python -m juliaset_mainを使用

あなたがすでにこれを試したかどうかは確かではありませんが、確かに確かです。

+0

お返事ありがとうございます。はい、私はそのようなセットアップファイルを使用し、あなたのやり方でそれを走らせました。すべてがローカルで動作しますが、データフローは失敗します。 –

+0

'--setup_file'パイプライン引数でセットアップファイルを使用するように指示する必要があります。 – de1

関連する問題