hadoop - Oozie - 每天或每小时运行一个工作流程
问题描述
我有一个执行 .hive 文件的 oozie 工作流(hive_insertion.xml),该文件将数据插入表中。Oozie 工作流程是:
<workflow-app xmlns = "uri:oozie:workflow:0.4" name = "simple-Workflow">
<start to = "Insert_into_treatment_costs_table " />
<action name = "Insert_into_treatment_costs_table">
<hive xmlns = "uri:oozie:hive-action:0.4">
<job-tracker> ${jobTracker} </job-tracker>
<name-node> ${nameNode} </name-node>
<script>hdfs_path_of_script/treatment_insert.hive’</script>
</hive>
<!-- what should happen on success--!>
<ok to = "end" />
<!-- what should happen on failure--!>
<error to = "kill_job" />
</action>
<!-- this is what happens on failure --!>
<kill name = "kill_job">
<message>Job failed</message>
</kill>
<!-- this is what happens on success --!>
<end name = "end" />
</workflow-app>
这可以从也具有上述“hive_insertion.xml”文件的目录中执行。
# sudo -u oozie oozie job –oozie
我在哪里进行更改,以便此工作流在每天结束时执行。
解决方案
您必须使用Oozie Coordinator来安排 oozie 工作流程。
要在每天结束时执行,请使用 EL 函数${coord:endOfDays(1)}
将您的工作流定义嵌入到协调器操作中,
<coordinator-app name="daily" frequency="${coord:endOfDays(1)}" start="${start}" end="${end}"
timezone="UTC" xmlns="uri:oozie:coordinator:0.1">
<action>
<workflow>
...
</workflow>
</action>
</coordinator-app>
注意: Oozie 协调器也支持Cron Syntax。将其用于更灵活的频率。
推荐阅读
- java - 向 ConstraintViolation 添加更多属性
- google-app-engine - google app engine flexible - 如何使用客户端库或 REST API 启动现有版本
- python - 如何来回多次切换pyqt5对话框?
- python - 如何在 python 中使用 pandas 从 csv 文件中读取?
- laravel - 未找到所有laravel路由
- ipfs - 启动js-ipfs节点时如何启动api网关?
- javascript - Bootstrap 4 Popover CSS 不会动态更改
- php - 是否可以在定义变量之前引用它?
- python - 如何在没有子数据的情况下获得价值?
- php - 在 CentOS 7 上以普通用户而不是 root/超级用户身份运行 composer