导出Oozie Web控制台中列出的作业

时间:2016-07-21 11:51:02

标签: hadoop oozie

道歉,如果这个问题听起来很基本,我对Hadoop环境完全不熟悉。

我在寻找什么?

在我的情况下,有一些工作计划在每天运行,我希望每天在Excel工作表中导出失败的工作列表

如何查看工作流作业?

目前我使用Oozie Web控制台查看作业,但我没有/看到导出选项。也, 我无法从Oozie documentation找到此信息。

但是,我发现可以使用

等命令列出作业

$ oozie jobs -oozie http://localhost:8080/oozie -localtime -len 2 -fliter status=RUNNING

我被困在哪里?

我想过滤给定日期的失败作业,而希望将其导出为csv / excel数据

1 个答案:

答案 0 :(得分:1)

@YoungHobbit指向that post是正确的,这与此非常相似;当使用 Oozie CLI (命令行界面)提取已在特定日期运行的整个作业列表时,他的回答已经失效。 /> 只是不要忘记指定“无限制”的回复,例如-len 999999999以避免副作用(defaut只显示前100个匹配,如果你经常运行许多工作,这可能会太低)。

诀窍是你可以制作一个更复杂的过滤器,如
"startCreatedTime=2016-06-28T00:00Z;endcreatedtime=2016-06-28T10:00Z;status=FAILED"
...但是您无法请求失败 已被杀死的 已暂停的作业 (这可能是由于临时YARN或HDFS中断造成的) 仍然可疑地运行(因为例如子工作流程已被暂停)< / em>的。
因此,您最好的选择是获取整个列表,然后过滤掉所有已成功的作业,使用普通的grep - 如另一个答案所示。

然后,您还需要一个复杂的sedawk脚本来将丑陋的CLI输出分解为格式良好的CSV。哎哟!

<小时/> 现在,您可以选择Oozie CLI: Oozie REST API (旧的Cloudera教程here,Oozie V4.2的引用here)可让您查询Oozie服务器使用任何编程语言提供...

  • HTTP客户端
  • 和一种解析JSON消息的方法(使用普通的旧正则表达式,如果没有其他可用的话)

逻辑基本相同 - 在所需的时间窗口中获取所有作业的列表,忽略SUCCEEDED作业,解析其他作业以生成CSV记录,转储到CSV文件中。
但是你的程序会更强大,因为它将基于结构化 JSON输入。

还有一件事:如果您熟悉Microsoft VBA,您甚至可以使用Excel宏以自助方式动态构建报告。无需在中间CSV文件中打扰。