将时间分区添加到表的最佳实践
Posted
技术标签:
【中文标题】将时间分区添加到表的最佳实践【英文标题】:Best practice to add time partitions to a table 【发布时间】:2012-10-22 11:40:54 【问题描述】:有一个事件表,按时间分区(年、月、日、小时) 想在 hive 脚本中加入一些事件,将年、月、日、小时作为变量, 例如,您如何添加我之前所有 6 小时的事件 没有'恢复所有...'
10 倍
【问题讨论】:
【参考方案1】:所以基本上我需要的是一种使用 Hive 脚本作为参数接收的日期的方法 并在该日期之前 3 小时和之后 3 小时添加所有分区,而不恢复所有分区并在每个 Where 子句中添加特定小时。
没有找到在 hive 脚本中执行此操作的方法,所以我编写了一个快速的 python 代码,它获取日期和表名,以及从之前/之后添加多少小时。 当尝试在 Hive 脚本中运行它时: !python script.py 表名 $hivecond:my.date 3 我很惊讶变量替换不会发生在以 ! 开头的行中
我的解决方法是获取 hive 脚本从机器中的日志文件中收到的日期,方法如下:
'猫/mnt/var/log/hadoop/steps/ls /mnt/var/log/hadoop/steps/ |sort -r|head -n 1
/stdout'
从那里您可以解析python代码中的每个配置单元参数,而无需通过配置单元传递。
【讨论】:
以上是关于将时间分区添加到表的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章