首页 > 解决方案 > 使用 beam 2.0 创建 Dataflow 模板管道时出现身份验证错误

问题描述

请参阅此链接以了解如何运行基于 Java 的 Cloud Dataflow - https://cloud.google.com/dataflow/docs/quickstarts/quickstart-java-maven

使用以下命令创建模板

mvn archetype:generate \
      -DarchetypeGroupId=org.apache.beam \
      -DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples \
      -DarchetypeVersion=2.16.0 \
      -DgroupId=org.example \
      -DartifactId=word-count-beam \
      -Dversion="0.1" \
      -Dpackage=org.apache.beam.examples \
      -DinteractiveMode=false

然后要使用 DataflowRunner 运行作业,请执行以下命令

mvn -Pdataflow-runner compile exec:java \
      -Dexec.mainClass=org.apache.beam.examples.WordCount \
      -Dexec.args="--project=<PROJECT_ID> \
      --stagingLocation=gs://<STORAGE_BUCKET>/staging/ \
      --output=gs://<STORAGE_BUCKET>/output \
      --runner=DataflowRunner"

但是当尝试运行上面的命令时出现以下错误 java.lang.RuntimeException: Failed to construction instance from factory method DataflowRunner#fromOptions(interface org.apache.beam.sdk.options.PipelineOptions)

标签: google-cloud-dataflow

解决方案


正如评论中所说,要解决java.lang.RuntimeException错误,在运行 Dataflow 作业之前,需要执行 Java 和 Apache Maven 的步骤。步骤包括:

  1. 将身份验证和环境变量设置GOOGLE_APPLICATION_CREDENTIALS为包含服务帐户密钥的 JSON 文件的路径
  2. 创建 Cloud Storage 存储分区
  3. 安装 Java 开发工具包 (JDK) 和 Apache Maven。验证JAVA_HOME环境变量是否已设置并指向 JDK 安装。

推荐阅读