我根据创建日期将数据存储在Hadoop中,因此我有多个目录 HDFS上基于 / data / {year} / {month} / {day} 格式创建的。 我希望在Hive中加载这些数据(定期)并创建相应的分区。目前我正在尝试几种方法,如下面的方法
CREATE EXTERNAL TABLE tablename (...)
PARTITIONED BY (year STRING, month STRING, day STRING)
LOCATION '/data';
ALTER TABLE tablename ADD PARTITION(year='2014', month='10', day='13') LOCATION '/data/2014/10/13';
但是使用这种方法我需要手动使用ALTER命令创建每个分区。有没有办法自动化和参数化这个过程(并将其放入工作流程),以便为每个子目录动态地将数据加载到Hive分区中?
答案 0 :(得分:1)
msck修复表怎么样?这应该自动加载子目录中的所有分区。见这里:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-RecoverPartitions(MSCKREPAIRTABLE)
答案 1 :(得分:0)
为了在您的案例中创建动态分区,您需要在定义分区列时执行以下操作
希望你理解这个概念。希望这可以帮助你