【问题标题】:How to create dataflow pipeline and auto deploy to google cloud?如何创建数据流管道并自动部署到谷歌云?
【发布时间】:2021-01-04 10:50:08
【问题描述】:

我正在使用 Apache Beam 和 maven 来创建管道和运行数据流作业。完成逻辑编码后,我运行以下命令将作业/模板上传到 Google Cloud。

mvn compile exec:java -Dexec.mainClass=com.package.MyMainClass -Dexec.args="--runner=DataflowRunner --autoscalingAlgorithm=NONE --numWorkers=25 --project=<PROJEC> --subnetwork=regions/us-east1/subnetworks/default --zone=us-east1-b --network=default --stagingLocation=gs://<TBD> --templateLocation=gs://<TBD> --otherCustomOptions"

在那之后,我看到了两种开始运行作业的方法

  1. 我必须转到 Dataflow UI 页面,单击以创建新作业并使用我自己的模板 blablabla...然后该作业将开始运行
  2. 作业已开始运行

我想知道 2 是如何实现的。我基本上想摆脱进入 UI 的麻烦。我想在我的笔记本电脑上提交并开始工作。任何见解将不胜感激!

【问题讨论】:

    标签: maven google-cloud-platform google-cloud-dataflow apache-beam


    【解决方案1】:

    区分traditional and templated Dataflow job execution很重要:

    如果您使用 Dataflow 模板(如您的情况),暂存和执行是单独的步骤。这种分离使您可以更灵活地决定谁可以运行作业以及从何处运行作业。

    但是,一旦您的模板被暂存,您就需要从该模板显式运行您的作业。要自动化此过程,您可以使用:

    API:

        POST https://dataflow.googleapis.com/v1b3/projects/YOUR_PROJECT_ID/templates:launch?gcsPath=gs://YOUR_BUCKET_NAME/templates/TemplateName
        {
            "jobName": "JOB_NAME",
            "parameters": {
                "inputFile" : "gs://YOUR_BUCKET_NAME/input/my_input.txt",
                "outputFile": "gs://YOUR_BUCKET_NAME/output/my_output"
            },
            "environment": {
                "tempLocation": "gs://YOUR_BUCKET_NAME/temp",
                "zone": "us-central1-f"
            }
        }
    

    gcloud command line tool:

        gcloud dataflow jobs run JOB_NAME \
            --gcs-location gs://YOUR_BUCKET_NAME/templates/MyTemplate \
            --parameters inputFile=gs://YOUR_BUCKET_NAME/input/my_input.txt,outputFile=gs://YOUR_BUCKET_NAME/output/my_output
    

    或任何client libraries

    或者,如果您不想创建 Dataflow 模板而只想直接部署和运行作业(这可能是您在第 2 点中提到的内容),您可以删除 --templateLocation范围。如果您在执行此操作时遇到任何错误,请确保您的管道代码也可以针对非模板化作业执行;作为参考,看看这个question

    【讨论】:

      【解决方案2】:

      模板制作完成后,您可以使用 UI 来启动它:

      REST API

      Gcloud Command Line

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-21
        • 1970-01-01
        • 2020-01-14
        • 2015-08-31
        • 2021-05-13
        • 1970-01-01
        相关资源
        最近更新 更多