将时间分区添加到表的最佳做法

时间:2012-10-22 11:40:54

标签: hive emr hiveql

有一个事件表,按时间(年,月,日,小时)划分 想在hive脚本中加入一些事件,将年,月,日,小时作为变量, 如何在我的时间之前的所有6小时内添加事件 没有'恢复所有......'

10倍

1 个答案:

答案 0 :(得分:0)

基本上我需要的是一种使用Hive脚本作为参数接收的日期的方法 并在该日期之前3小时和之后3小时添加所有分区,而不是恢复所有分区并在每个Where子句中添加特定小时数。

在hive脚本中没有找到办法,所以我写了一个快速的python代码,它获取了一个日期和表名,以及从之前/之后添加了多少小时。 尝试在Hive脚本中运行它时: !python script.py tablename $ {hivecond:my.date} 3 我感到惊讶的是,变量替换并不是以一个以!开头的行开始的。

我的解决方法是使用以下内容获取hive脚本从机器中的日志文件中收到的日期: 'cat / mnt / var / log / hadoop / steps / ls /mnt/var/log/hadoop/steps/ |sort -r|head -n 1 / stdout' 从那里你可以解析python代码中的每个hive参数,而不通过Hive传递它。