gcp dataflow apache-beam问题。使用代码将另一个python文件导入到main .py

时间:2018-10-18 12:45:40

标签: python google-cloud-dataflow apache-beam

在处理gcp数据流项目时遇到问题。 我已经在python中创建了数据流管道代码。它运作良好。我想将此代码文件导入具有某些类和功能的另一个python代码文件中。如果我只是导入但不使用它,则整个代码将无法正常工作。

当我在pub / sub主题中放置一条消息时出现错误文本:

  

文件“ dataflow_simple.py”,第87行,正在处理中   NameError:全局名称“ pvalue”未定义

如何导入具有某些类的另一个文件并使用它?

1 个答案:

答案 0 :(得分: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')

Reference