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

Exporting jobs listed in Oozie Web Console

抱歉,如果这个问题听起来很基础,我是 Hadoop 环境的新手。

我在找什么?

在我的例子中,每天都有 运行 作业安排,我希望每天在 excel sheet 中导出失败作业列表

如何查看工作流作业?

目前我使用 Oozie 网络控制台查看作业,但没有 have/see 导出选项。还, 我无法从 Oozie documentation.

中找到此信息

但是,我发现可以使用

这样的命令列出工作

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

我卡在哪里了?

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

@YoungHobbit 指出 that post 与此非常相似;当谈到 使用 Oozie CLI 在特定日期 提取具有 运行 的整个工作列表时,他的回答是准确的](命令行界面)。
只是不要忘记指定 "unbounded" 回复,例如-len 999999999 以避免副作用(默认仅显示前 100 个匹配项,如果您 运行 很多频繁的工作,这可能太低了)。

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

那么您还需要一个复杂的 sedawk 脚本来将丑陋的 CLI 输出分解为格式正确的 CSV。哎哟!


现在,您有了 Oozie CLI 的替代方案:Oozie REST API(旧的 Cloudera 教程 here, reference for Oozie V4.2 here)允许您使用 [=35= 查询 Oozie 服务器]任何提供...的编程语言

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

逻辑基本相同——在所需时间内获取所有作业的列表 window,忽略成功的作业,解析其他作业以生成 CSV 记录,转储到 CSV 文件中。
但是你的程序会更健壮,因为它将基于 structured JSON input.

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