道歉,如果这个问题听起来很基本,我对Hadoop环境完全不熟悉。
我在寻找什么?
在我的情况下,有一些工作计划在每天运行,我希望每天在Excel工作表中导出失败的工作列表。
如何查看工作流作业?
目前我使用Oozie Web控制台查看作业,但我没有/看到导出选项。也, 我无法从Oozie documentation找到此信息。
但是,我发现可以使用
等命令列出作业 $ oozie jobs -oozie http://localhost:8080/oozie -localtime -len 2 -fliter status=RUNNING
我被困在哪里?
我想过滤给定日期的失败作业,而希望将其导出为csv / excel数据。
答案 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
- 如另一个答案所示。
然后,您还需要一个复杂的sed
或awk
脚本来将丑陋的CLI输出分解为格式良好的CSV。哎哟!
逻辑基本相同 - 在所需的时间窗口中获取所有作业的列表,忽略SUCCEEDED作业,解析其他作业以生成CSV记录,转储到CSV文件中。
但是你的程序会更强大,因为它将基于结构化 JSON输入。
还有一件事:如果您熟悉Microsoft VBA,您甚至可以使用Excel宏以自助方式动态构建报告。无需在中间CSV文件中打扰。