首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在不具有本地所有依赖项的情况下运行/序列化数据流作业?

是否可以在不具有本地所有依赖项的情况下运行/序列化数据流作业?
EN

Stack Overflow用户
提问于 2019-09-27 20:22:47
回答 2查看 212关注 0票数 0

我已经使用Apache光束为Google Cloud Dataflow创建了一个管道,但我不能在本地拥有Python依赖项。但是,远程安装这些依赖项是没有问题的。

在我的本地(开发)环境中,有没有可能在不执行Python代码的情况下运行作业或创建模板?

EN

回答 2

Stack Overflow用户

发布于 2019-09-27 20:39:39

看看这个tutorial。基本上,您可以编写python管道,然后通过命令行使用

代码语言:javascript
复制
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帐户和凭据。

票数 0
EN

Stack Overflow用户

发布于 2019-09-28 00:35:34

好吧,我不是百分之百确定这是可能的,但你可以:

  • 定义一个包含管道的所有依赖项的requirements.txt文件,并在管道构建时导入和使用依赖项,仅在执行时代码中使用。

例如,您的文件可能如下所示:

代码语言:javascript
复制
import apache_beam as beam

with beam.Pipeline(...) as p:
  result = (p | ReadSomeData(...)
            | beam.ParDo(MyForbiddenDependencyDoFn()))

在同一个文件中,您的DoFn将从管道执行时代码中导入您的依赖项,例如process方法。请参见:

代码语言:javascript
复制
class MyForbiddenDependencyDoFn(beam.DoFn):

  def process(self, element):
    import forbidden_dependency as fd
    yield fd.totally_cool_operation(element)

执行流水线时,您可以执行以下操作:

代码语言:javascript
复制
python your_pipeline.py \
    --project $GCP_PROJECT \
    --runner DataflowRunner \
    --temp_location $GCS_LOCATION/temp \
    --requirements_file=requirements.txt

我从未尝试过这一点,但它可能会起作用:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58134480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档