1

我正在尝试在我们的测试作曲家环境中使用 DataflowJavaOperator,但我遇到了403 forbidden错误。我的目的是使用测试作曲家环境在不同的项目上启动 Dataflow Java 作业。

t2 = DataFlowJavaOperator(
        task_id = "run-java-dataflow-job",
        jar="gs://path/to/dataflow-jar.jar",
        dataflow_default_options=config_params["dataflow_default_options"],
        gcp_conn_id=config_params["gcloud_config"]["conn_id"],
        dag=dag
)

我的默认选项看起来像

'dataflow_default_options': {
  'project': 'other-project',
  'input': 'other-project:dataset.table',
  'output': 'other-project:dataset.table'
  ...
}

我尝试在与 Dataflow 相同的项目中创建一个临时的作曲家测试环境,这使我可以按预期使用 DataflowJavaOperator。只有当 Composer 环境与 Dataflow 位于不同的项目中时,DataflowJavaOperator 才会按预期工作。

我目前的解决方法是使用 BashOperator,使用“env”将 GOOGLE_APPLICATION_CREDENTIALS 设置为 gcp_conn_id 路径,将 jar 文件存储在我们的测试作曲家存储桶中,然后运行以下 bash 命令:

java -jar /path/to/dataflow-jar.jar \ 
[... all Dataflow job options]

是否可以使用 DataflowJavaOperator 在另一个项目中启动 Dataflow 作业?

4

1 回答 1

1

您需要为 Composer 创建一个不同的 GCP 连接以与您的第二个 GCP 项目交互,并且您需要将该连接 ID 传递gcp_conn_idDataFlowJavaOperator

于 2018-10-10T13:53:32.443 回答