我正在使用Apache光束和maven创建管道并运行数据流作业。逻辑编码后,我运行以下命令将作业/模板上传到Google Cloud。
mvn编译exec:java-Dexec. main Class=com.pack.MyMainClass-Deexec.args="--runner=DataflowRunner--autoscaling算法=NONE--numWorker=25--project=
在那之后,我看到了两种开始工作的方式
我想知道2是如何实现的。我基本上想摆脱进入UI的麻烦。我想在我的笔记本电脑上提交并开始工作。任何见解都将不胜感激!
区分传统数据流作业执行和模板化数据流作业执行非常重要:
如果您使用数据流模板(就像您的情况一样),暂存和执行是单独的步骤。这种分离为您提供了额外的灵活性来决定谁可以运行作业以及从哪里运行作业。
但是,一旦您的模板被暂存,您需要从该模板显式运行您的作业。要自动化此过程,您可以使用:
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命令行工具:
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
或任何客户端库。
或者,如果您不想创建Dataflow模板,只想直接部署和运行作业(这可能是您在第2点中提到的),您可以删除--templatePlace
参数。如果您在执行此操作时遇到任何错误,请确保您的管道代码也可以为非模板化作业执行;作为参考,请查看此问题。
一旦模板被暂存,以及UI,您可以使用以下方式启动它:
RestAPI
Gcloud命令行