我的数据文件夹位于以下结构中,包含2年数据(2015-2017)。
应用程序数据/ ContryName /年/月/日/ app1.json
例如:
应用程序数据/印度/ 2016/07/01 / geek.json
应用程序数据/印度/ 2016/07/02 / geek.json
应用程序数据/ US / 2016/07/01 / geek.json
现在我已经创建了一个带分区的外部表。
PARTITIONED BY (Country String, Year String, Month String, day String)
在此之后,我需要在alter table语句中添加分区。
ALTER TABLE mytable
ADD PARTITION (country='India', year='2016',month='01', day='01')
location 'AppData/India/2016/07/01/'
无法为每一天创建添加分区脚本,
有没有最简单的方法来实现这一目标?
答案 0 :(得分:1)
msck repair table mytable
,但不是您当前的目录命名约定
<强>的bash 强>
hdfs dfs -mkdir -p /AppData/country=India/year=2016/month=07/day=01
hdfs dfs -mkdir -p /AppData/country=India/year=2016/month=07/day=02
hdfs dfs -mkdir -p /AppData/country=US/year=2016/month=07/day=01
<强>蜂房强>
create table mytable (i int)
partitioned by (country string, year string, month string, day string)
location '/AppData'
;
hive> msck repair table mytable;
OK
Partitions not in metastore: mytable:country=India/year=2016/month=07/day=01 mytable:country=India/year=2016/month=07/day=02 mytable:country=US/year=2016/month=07/day=01
Repair: Added partition to metastore mytable:country=India/year=2016/month=07/day=01
Repair: Added partition to metastore mytable:country=India/year=2016/month=07/day=02
Repair: Added partition to metastore mytable:country=US/year=2016/month=07/day=01
hive> show partitions mytable;
OK
partition
country=India/year=2016/month=07/day=01
country=India/year=2016/month=07/day=02
country=US/year=2016/month=07/day=01