我已经使用Apache光束为Google Cloud Dataflow创建了一个管道,但我不能在本地拥有Python依赖项。但是,远程安装这些依赖项是没有问题的。
在我的本地(开发)环境中,有没有可能在不执行Python代码的情况下运行作业或创建模板?
发布于 2019-09-27 20:39:39
看看这个tutorial。基本上,您可以编写python管道,然后通过命令行使用
python your_pipeline.py \
--project $YOUR_GCP_PROJECT \
--runner DataflowRunner \
--temp_location $WORK_DIR/beam-temp \
--setup_file ./setup.py \
--work-dir $WORK_DIR关键部分是--runner DataflowRunner,,所以它使用Google Dataflow (而不是您的本地安装)来运行管道。显然,您必须设置您的Google帐户和凭据。
发布于 2019-09-28 00:35:34
好吧,我不是百分之百确定这是可能的,但你可以:
requirements.txt文件,并在管道构建时导入和使用依赖项,仅在执行时代码中使用。例如,您的文件可能如下所示:
import apache_beam as beam
with beam.Pipeline(...) as p:
result = (p | ReadSomeData(...)
| beam.ParDo(MyForbiddenDependencyDoFn()))在同一个文件中,您的DoFn将从管道执行时代码中导入您的依赖项,例如process方法。请参见:
class MyForbiddenDependencyDoFn(beam.DoFn):
def process(self, element):
import forbidden_dependency as fd
yield fd.totally_cool_operation(element)执行流水线时,您可以执行以下操作:
python your_pipeline.py \
--project $GCP_PROJECT \
--runner DataflowRunner \
--temp_location $GCS_LOCATION/temp \
--requirements_file=requirements.txt我从未尝试过这一点,但它可能会起作用:)
https://stackoverflow.com/questions/58134480
复制相似问题