【发布时间】:2014-08-14 12:53:22
【问题描述】:
在 Hive 文档中,它讨论了外部表的动态分区:https://cwiki.apache.org/confluence/display/Hive/HCatalog+DynamicPartitions。
我最近升级到 Hive 0.12 并希望通过在 DDL 的位置部分中提供表的根 HDFS 位置来使用动态外部表分区,然后添加子目录,然后这些子目录将自动添加到表中。子目录将由 Flume 代理创建,该代理将添加日期作为路径名。我希望位于根目录顶部的 Hive 表能够自动获取子目录中的新数据。
例如,如果根位置是:
hdfs:///partitionTest
我使用 Flume 使用路径添加数据
hdfs:///partitionTest/year=%Y/month=%m/day=%d
我的 Hive DDL 语句在哪里:
create external table partitionTest (line String)
partitioned by (year int, month int, day int)
stored as sequencefile
location 'hdfs:///partitionTest';
我仍然发现自己必须使用 alter table 语句手动添加分区,或者将数据从包含相关分区字段的另一个表插入到该表中 - 这确实将数据写入 HDFS 上的正确目录结构。
我认为 Hive 0.12 将允许我将数据写入 HDFS,然后自动将其添加到表中,我错了吗?我是否总是需要手动添加分区才能让 Hive 获取新数据?
【问题讨论】:
标签: hadoop hive partitioning