繁体   English   中英

Apache Beam Dataflow 作业在本地做什么?

[英]What does an Apache Beam Dataflow job do locally?

我在使用 Apache Beam Python SDK 定义的数据流时遇到一些问题。 如果我逐步执行我的代码,它会到达 pipeline.run() 步骤,我认为这意味着执行图已成功定义。 但是,该作业从未在 Dataflow 监控工具上注册,让我认为它永远不会到达管道验证步骤。

我想更多地了解这两个步骤之间发生了什么,以帮助调试问题。 我看到 output 表明我的requirements.txtapache-beam中的包正在安装 pip 并且似乎有些东西在发送到谷歌的服务器之前被腌制了。 这是为什么? 如果我已经下载了 apache-beam,为什么还要重新下载呢? 腌制的到底是什么?

我不是在这里寻找解决我的问题的方法,只是想更好地理解这个过程。

在图构造期间,数据流将检查错误和管道中的任何非法操作。 一旦检查成功,执行图将转换为JSON并传输到Dataflow服务。 在Dataflow服务中,JSON图经过验证,并且成为工作。 但是,如果管道在本地执行,则该图不会转换为JSON或传输到Dataflow服务。 因此,该图不会在监视工具中显示为作业,它将在本地计算机上运行[1]。 您可以按照文档配置本地计算机[2]。

[1] https://cloud.google.com/dataflow/service/dataflow-service-desc#pipeline-lifecycle-from-pipeline-code-to-dataflow-job

[2] https://cloud.google.com/dataflow/pipelines/specifying-exec-params#configuring-pipelineoptions-for-local-execution

使用pip download requirements.txt 中的包,并将它们暂存到暂存位置。 这个暂存位置将被 Dataflow 用作缓存,并用于在 Dataflow worker 上调用pip install -r requirements.txt以减少对 pypi 的调用时查找包。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM