我在Hive中运行脚本X.我想存储一个记录脚本X上次运行的日期。每次脚本X运行时,它应该选择它运行的最后一个日期,将其增加七天并在其查询中使用此值,然后将最后一个日期更新为此新值。 (理想情况下,此脚本X应运行N次,直到日期值达到今天的日期。因此,如果日期达到2014-02-16,则可以停止,因为下一个日期是2014-02-23,这是未来的日期。 )
我计划通过手动创建一个只存储初始开始日期并不断更新的表格来实现这一目标 -
创建表IF NOT EXISTS date_last_run(last_run_date timestamp);
插入OVERWRITE TABLE date_last_run 选择'2014-05-01 00:00:00'AS last_run_day 来自date_last_run
- 我尝试了上面的插入,但它没有返回错误,也没有插入数据。如何在此表中插入日期?
在脚本中我会写 -
插入OVERWRITE TABLE date_last_run 从date_last_run中选择last_run_day +整数'7'
- (我不确定上述内容是否有效)
- 在脚本中使用last_run_day
这是一个好的解决方案吗?
答案 0 :(得分:1)
这可能有用,但更强大的解决方案是使用Apache Oozie为您处理实例。您可以在Oozie workflow中添加Hive脚本,然后将其安排在Oozie coordinator每周运行一次。
如果您需要运行过去的日期,可以将协调器的start
属性更改为过去启动,实例将自动赶上当前日期。
每次运行的日期都可以使用协调器property
中的action
传递到工作流,然后使用param
从工作流传递到Hive脚本在Hive行动中。在Hive脚本中,您可以使用${parameter_name}
来引用日期参数。