Проблема передачи данных gcp apache-beam. импортировать другой файл Python в основной.py с кодом
У меня проблема при работе над проектом потока данных gcp. Я создал код конвейера потока данных в Python. Это работает хорошо. Я хочу импортировать этот файл кода в другой файл кода Python с некоторыми классами и функциями. Если я просто импортирую его, но не использую, весь мой код не будет работать.
Текст ошибки, когда я помещаю сообщение в pub/sub topic:
Файл "dataflow_simple.py", строка 87, в процессе NameError: глобальное имя 'pvalue' не определено
Что я могу сделать, чтобы импортировать другой файл с некоторыми классами и использовать его?
1 ответ
Чего ты пытаешься достичь? Если цель состоит в том, чтобы один файл определял функции и классы, а другой определял конвейер, то вы должны сделать это наоборот: импортировать функции из файла, который содержит конвейер.
Если это действительно то, что вы пытаетесь сделать, упорядочите свои файлы таким образом и добавьте файл setup.py:
Dataflow
|----my_module
|----__init__.py
|----functions.py
|----classes.py
|----setup.py
|----my_pipe.py
Тогда в my_pipe.py:
from my_module.functions import ...
from my_module.classes import ...
По-прежнему в my_pipe.py, укажите путь к setup.py при построении конвейера. Это обеспечит копирование всех файлов при отправке задания в Dataflow:
options = beam.options.pipeline_options.PipelineOptions(
...,
setup_file='/path/to/setup.py')