我已经使用Apache Beam为Google Cloud Dataflow创建了管道,但是我不能在本地拥有Python依赖项。但是,这些依赖项可以远程安装没有问题。
在不执行本地(开发)环境中的Python代码的情况下,是否可以运行作业或创建模板?
答案 0 :(得分:0)
看看这个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帐户和凭据。
答案 1 :(得分:0)
好吧,我不是100%确信这是可能的,但是您可以:
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
我从来没有尝试过,但是它可能会起作用:)