使用谷歌云数据流执行器

谷歌云数据流执行器使用Cloud Dataflow managed service.当你使用谷歌数据流服务执行管道程序时,执行器会上传你的可执行代码和相应依赖到谷歌云存储器并且创建一个云数据流作业,它会使用在谷歌云平台上管理的资源去执行你的管道任务。

该云数据流执行器和服务适用于大量的、持续性的任务并且提供:

Beam 功能矩阵 记录了云数据流执行器支持的功能。

云数据流执行器前提条件和安装:

为了使用云数据流执行器,你必须完成以下步骤:

  1. 选择或者创建一个谷歌云平台终端项目。

  2. 开通项目付费

  3. 使用必须的谷歌云APIs:云数据流,计算引擎,堆栈驱动日志记录,云存储,云json存储,云资源管理器。 你可能需要使用额外的APIs(比如大查询,云发布/订阅,或者云数据库)如果你要在管道流程序里面使用它。

  4. 安装谷歌云SDK。

  5. 创造一个云存储桶。

    • 在谷歌云平台终端,跳转到云存储浏览器。
    • 点击 创建桶
    • 创建桶对话框中,选择以下属性:
      • 名字:独一无二的桶名。不要在桶名中包含敏感信息,因为桶命名空间是全局的和公开可见的。
      • 存储类: 多地域
      • 地址: 选择你钟爱的地址。
    • 点击 创建

相关更多信息,请查看章节 在你开始前 ,该部分位于云数据流快速开始

指定你的依赖

当使用java, 你必须在你的pom.xml中指定云数据流执行器的依赖。

<dependency>
  <groupId>org.apache.beam</groupId>
  <artifactId>beam-runners-google-cloud-dataflow-java</artifactId>
  <version>2.1.0</version>
  <scope>runtime</scope>
</dependency>

该部分不适用于python的 Beam SDK。

授权

在执行你的管道流程序前,你一定要授权谷歌云平台。执行以下命令来获得应用默认证书.

谷歌云授权应用默认登陆 

谷歌数据流执行器的管道流选项

当使用谷歌数据流执行器(java)执行你的管道流程序时,应该考虑这些通用的管道流选项。 当使用谷歌数据流执行器(Python)执行你的管道流程序时,应该考虑这些通用的管道流选项。

</tr> </table> 查看相关的文档 [DataflowPipelineOptions](/documentation/sdks/javadoc/2.1.0/index.html?org/apache/beam/runners/dataflow/options/DataflowPipelineOptions.html)[`PipelineOptions`](/documentation/sdks/pydoc/2.1.0/apache_beam.options.html#apache_beam.options.pipeline_options.PipelineOptions) 接口 (和任何子接口),额外的管道配置选项. ## 附加的说明和警告 ### 监控你的任务 当你的管道流程序执行时,你可以监控程序的进度,查看执行的细节,并且接收管道流程序结果的更新,通过 [数据流监视接口](https://cloud.google.com/dataflow/pipelines/dataflow-monitoring-intf) 或者 [数据流命令行接口](https://cloud.google.com/dataflow/pipelines/dataflow-command-line-intf). ### 阻塞执行 阻塞直至你的程序执行完成, 使用 waitToFinish wait_until_finish在`PipelineResult` 从 `pipeline.run()`的返回处. 云数据流执行器打印任务状态的更新和终端消息当此处阻塞的时候。当结果终端连接到活动的任务时,注意在命令行中按下**Ctrl+C** 不会取消你的任务。为了取消任务,你可以使用[数据流监视接口](https://cloud.google.com/dataflow/pipelines/dataflow-monitoring-intf) 或者 [数据流命令行接口](https://cloud.google.com/dataflow/pipelines/dataflow-command-line-intf). ### 流式执行 如果你的管道程序使用一个源源不断的数据源,你必须设置 `streaming` 选项为 `true`.适用于Python 的Beam SDK 现在还不支持流式的管道程。
字段 描述 默认值
runner 使用这个管道流执行器。该选项使你可以决定在执行的时候的管道流执行器。 设置 数据流 或者 数据流执行器 运行在谷歌数据流服务上
project 你的谷歌云项目项目 ID 。 如果没有设置,默认为当前环境下的默认项目。默认项目的设置使用谷歌云
streaming 是否流模式设置为打开或者关闭;true 如果打开,请设置为true 如果执行管道流程序使用无界 集合s。 false
tempLocation temp_location 可选项。 必选项。 临时文件的存放路径。必须是一个有效的谷歌云存储URL,以 gs://开头。 如果设置了, 临时目录</co奖杯用作gcp临时目录的默认值。</span> </td> 没有默认值。
gcpTempLocation 云存储桶的临时目录必须是一个有效的云存储URL,以gs://开头. 如果没有设置,默认的临时目录会被提供。 临时目录 是一个有效的云存储URL.如果临时目录 不是一个有效的云存储URL, 你必须设置一个 gcp临时目录.
stagingLocation staging_location 可选项. 存储你的二进制和任何临时文件的云存储桶路径。 这个路径必须是一个有效的云存储URL,以gs://开头. 如果没有设置, 默认设置遵照 gcp临时目录. 如果没有设置, 默认设置遵照临时目录.
save_main_session 保存主要的 session 状态 ,因此被定义在__main__ (e.g. 交互式的 session) 中的序列化函数和类可以被反序列化。一些工作流不需要session状态,例如,如果所有的函数或类都定义在合适的模块中 (除了 __main__) 并且这些模块在节点中被加载。 false
sdk_location 使用Beam SDK的下载路径覆盖默认路径。这个值可以是一个URL,一个云存储路径或者一个SDK开发包的本地路径。 被提交的工作流将会从此路径下载或者拷贝开发包。 如果设置成 default, 将会使用标准的SDK路径. 如果为空, 没有SDK会被拷贝. default