1

我在名为 WF1 的名为 AC1 的动作的 oozie 工作流中运行一些代码。这个工作流不是计划的,而是连续运行的。通常动作 AC1 每天会轮到 4 次。此操作的运行时间以前未知。现在,还有另一个 Oozie 工作流 WF2,计划在凌晨 4:00 使用 Oozie 协调器运行。此 WF2 仅运行 3-4 分钟,因为这是一个需要在非高峰时间运行的小代码。在这个 WF2 中,我们要检查工作流操作 AC1 的状态(作为 WF1 的一部分运行 [每次 AC1 实例运行时,都会为其分配一个新 id]。是否可以仅使用名称获取 AC1 的状态,而不知道身份证?

我知道我有一个解决方法,我可以将 AC1 的状态存储在 Hive 表中并继续查询相同的状态以了解状态。但是,如果提供开箱即用的东西,那将是有帮助的。

4

1 回答 1

0

有几种方法可以做到(正如你提到的)。

内置的方法是使用作业信息 ,因此您可以进行简单的获取并获取所有操作的作业状态响应,在下面的示例中,您可以actions查找您的操作名称并更改status例如:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
.
{ 
  id: "0-200905191240-oozie-W",
  appName: "indexer-workflow",
  appPath: "hdfs://user/bansalm/indexer.wf",
  externalId: "0-200905191230-oozie-pepe",
  user: "bansalm",
  status: "RUNNING",
  conf: "<configuration> ... </configuration>",
  createdTime: "Thu, 01 Jan 2009 00:00:00 GMT",
  startTime: "Fri, 02 Jan 2009 00:00:00 GMT",
  endTime: null,
  run: 0,
  actions: [
    {
      id: "0-200905191240-oozie-W@indexer",
      name: "AC1",
      type: "map-reduce",
      conf: "<configuration> ...</configuration>",
      startTime: "Thu, 01 Jan 2009 00:00:00 GMT",
      endTime: "Fri, 02 Jan 2009 00:00:00 GMT",
      status: "OK",
      externalId: "job-123-200903101010",
      externalStatus: "SUCCEEDED",
      trackerUri: "foo:8021",
      consoleUrl: "http://foo:50040/jobdetailshistory.jsp?jobId=...",
      transition: "reporter",
      data: null,
      errorCode: null,
      errorMessage: null,
      retries: 0
    },
于 2019-05-09T21:13:44.270 回答