将时间分区添加到表的最佳实践

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代码中的每个配置单元参数,而无需通过配置单元传递。

【讨论】:

以上是关于将时间分区添加到表的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

MySQL分区表最佳实践

MySQL分区表最佳实践

MySQL分区表最佳实践

架构师之路Learn Day7之Hive生产环境最佳实践

BigQuery 表设计最佳实践:日期分区和分片的组合?

从 db2 sql 服务中清除数据的最佳实践