Apache Beam Dataflow作业在本地执行什么操作?

时间:2018-04-27 17:31:50

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

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

我想更多地了解这两个步骤之间发生的事情,以帮助调试问题。我看到我的requirements.txtapache-beam中的输出指示包正在安装pip,似乎有些东西在被发送到Google的服务器之前被腌制。这是为什么?如果我已经下载了apache-beam,为什么还要再次下载?腌菜究竟到底是什么?

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

1 个答案:

答案 0 :(得分:0)

在图形构建期间,Dataflow会检查错误以及管道中的任何非法操作。检查成功后,执行图将转换为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