我们有一个外部Hive表,用于处理原始日志文件数据。这些文件是每小时一次,并按日期和源主机名进行分区。
目前我们正在使用每小时触发几次的简单python脚本导入文件。该脚本根据需要在HDFS上创建子文件夹,从临时本地存储复制新文件并将任何新分区添加到Hive。
今天,使用“ALTER TABLE ... ADD PARTITION ...”创建新分区。但是,如果在表上运行另一个Hive查询,它将被锁定,这意味着add partition命令将失败(如果查询运行的时间足够长),因为它需要独占锁。
这种方法的另一种方法是使用“MSCK REPAIR TABLE”,由于某种原因 似乎无法获取表中的任何锁。但是,我的印象是不建议在生产环境中使用修复表。
答案 0 :(得分:1)
不是一个好的答案,但我们有同样的问题,这是我们的发现:
基本上,我们仍在考虑我们的分区策略,但我们可能会尝试提前创建所有可能的分区(在获取数据之前),因为我们准确地知道所有未来分区的值(可能不是你的情况)。