Google cloud platform 通过云功能同步触发多个数据流作业?

Google cloud platform 通过云功能同步触发多个数据流作业?,google-cloud-platform,google-cloud-dataflow,apache-beam,Google Cloud Platform,Google Cloud Dataflow,Apache Beam,我必须使用googledataflow流程中的googlecloud功能逐个触发多个模板。执行一个模板后,必须调用另一个模板 const google = require('googleapis'); exports.goWithTheDataFlow = function(event, callback) { const file = event.data; if (file.resourceState === 'exists' && file.name) { go

我必须使用
googledataflow流程中的
googlecloud
功能逐个触发多个模板。执行一个模板后,必须调用另一个模板

 const google = require('googleapis');
exports.goWithTheDataFlow = function(event, callback) {
 const file = event.data;
 if (file.resourceState === 'exists' && file.name) {
   google.auth.getApplicationDefault(function (err, authClient, projectId) {
     if (err) {
       throw err;
     }
     if (authClient.createScopedRequired && authClient.createScopedRequired()) {
       authClient = authClient.createScoped([
         'https://www.googleapis.com/auth/cloud-platform',
         'https://www.googleapis.com/auth/userinfo.email'
       ]);
     }

     const dataflow = google.dataflow({ version: 'v1b3', auth: authClient });
     dataflow.projects.templates.create({
       projectId: 'testing1-180111',
       resource: {
         parameters: {
         },
         jobName: 'cloud-fn-dataflow-test',
         gcsPath: 'gs://kishan-configuration/templates/FinalConfigTable'
       }
     }, function(err, response) {
       if (err) {
         console.error("problem running dataflow template, error was: ", err);
       }
       console.log("Dataflow template response: ", response);
       callback();
     });

   });
 }
};
package.json
文件代码如下

{
  "name": "kishan_kumar464",
  "version": "1.0.0",
  "main": "index.js",
  "dependencies": {
    "google-cloud": "^0.56.0",
    "googleapis": "^22.2.0"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Kishan",
  "license": "ISC",
  "description": ""
}

如果我理解正确,您希望从模板创建作业并等待完成。之后,可以从模板创建下一个作业。对吗

我认为您可能可以在创建作业后轮询作业状态(作业id在dataflow.projects.templates.create的响应中)


若要检查作业的状态,请使用projects.jobs.get API。

如果我理解正确,您希望从模板创建作业并等待完成。然后,您可以从模板创建下一个作业。正确吗

我认为您可能可以在创建作业后轮询作业状态(作业id在dataflow.projects.templates.create的响应中)


若要检查作业的状态,请使用projects.jobs.get API。

我会在队列中放置一条消息以触发下一个管道–cloud pubsub非常适合这一点,它可以触发云函数。但我会尝试你的方法。你能提供一些示例吗?我同意你的说法,即“作业X已完成”通过pubsub发出通知会更好。但是dataflow目前不支持此功能。我没有直接的示例,但是因为您已经可以调用dataflow API,所以可以做的是:(1)使用dataflow.projects.jobs.get API获取作业对象。(2)检查Job.currentState字段。如果状态为Job\u state\u DONE,则继续下一个作业。(3)如果作业仍在运行或失败,请进行相应的处理。谢谢,但我的管道未修复,这意味着一段时间后,可以先处理10个作业,因此每当函数触发时,作业就会启动(意味着新实例启动)。因此,第一个作业序列开始10个作业,然后是下一个作业序列,但我需要将该作业序列添加到队列中,否则就可以从数据流程序中触发模板。我会在队列上放置一条消息以触发下一个管道–cloud pubsub非常适合,它可以触发云函数。但我会尝试我同意你的看法,通过pubsub发出“作业X已完成”通知会更好。但是dataflow目前不支持。我没有一个直接的例子,但是因为你已经可以调用dataflow API,所以你可以做的是:(1)使用dataflow.projects.jobs.get API来获取作业对象。(2)检查job.currentState字段。如果状态为job\u state\u DONE,则继续执行下一个作业。(3)如果作业仍在运行或失败,请进行相应处理。谢谢,但我的管道未修复,这意味着一段时间后可以有10个作业出现,因此每当函数触发时,作业就会启动(意味着新实例启动).所以第一个作业顺序开始10个作业,然后是下一个作业顺序,但我需要将该作业顺序添加到队列中,否则会从数据流程序中触发模板。我想你正在寻找工作流管理系统。一定要查看luigi、Airflow等。不,我没有,请共享链接,我是lso尝试使用Pub/Sub时,我会在队列中放置一条消息以触发下一个管道–使用cloud pubsub.Pub/Sub也失败,因为我们执行pubsub以启动一个新函数,并在结束管道之前调用该函数。调用该函数并不重要。我必须使用模板运行作业,因此必须以这种方式定义图形。您应该请关注工作流管理系统!我想您正在寻找工作流管理系统。请务必查看luigi、Airflow等。不,我没有看到您可以共享链接,我也在尝试使用Pub/Sub。我会在队列中放置一条消息以触发下一个管道–使用cloud pubsub.Pub/Sub也失败,因为我们执行pubsub以启动不是一个新函数,它会在结束我的管道之前调用该函数。无论何时调用它都无关紧要。我必须使用模板运行我的作业,因此图形必须仅以这种方式定义。您应该探索工作流管理系统!