Json 在配置单元中为年、月和日创建表分区

Json 在配置单元中为年、月和日创建表分区,json,hive,hiveql,partitioning,Json,Hive,Hiveql,Partitioning,我的数据文件夹在下面的结构中,包含2年的数据(2015-2017年) AppData/ContryName/year/month/Day/app1.json 例如: AppData/India/2016/07/01/geek.json AppData/India/2016/07/02/geek.json AppData/US/2016/07/01/geek.json 现在我已经创建了一个带有分区的外部表 PARTITIONED BY (Country String, Year String, M

我的数据文件夹在下面的结构中,包含2年的数据(2015-2017年)

AppData/ContryName/year/month/Day/app1.json

例如:

AppData/India/2016/07/01/geek.json

AppData/India/2016/07/02/geek.json

AppData/US/2016/07/01/geek.json

现在我已经创建了一个带有分区的外部表

PARTITIONED BY (Country String, Year String, Month String, day String)
在此之后,我需要在ALTERTABLE语句中添加分区

ALTER TABLE mytable 
ADD PARTITION (country='India', year='2016',month='01', day='01') 
location 'AppData/India/2016/07/01/'
每天创建并添加分区脚本是不可能的


有什么最简单的方法可以做到这一点吗

msck修复表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'
;



msck修复表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'
;



请详细说明“不可能”请详细说明“不可能”谢谢你的回答,这很有帮助,但问题是我有2015年至2017年期间每天的数据。我无法创建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=India/year=2016/month=07/day=30 hdfs dfs-mkdir-p/AppData/country=India/year=2016/month=08/day=01。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。有没有自动创建这些子文件夹的方法?用bash脚本重命名文件夹或者用bash脚本添加分区如何?我会将这些数据并排移动到S3,因此无法在那里执行shell脚本:(,这就是这里的问题。(1)根据谷歌的说法,这似乎是可能的(2)您不必在S3上执行脚本,而是在您当前的数据上生成一批
alter table…add partition…
命令是否可以将这些分区作为一个单一的日期进行查询?或者所有的查询都需要像where day=2、month=3和year=2016一样感谢您的回答,这很有帮助,但问题是我有2015年至2017年期间每天的数据。我无法创建以下文件夹: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=India/year=2016/month=07/day=30 hdfs dfs-mkdir-p/AppData/country=India/year=2016/month=08/day=01有没有自动创建这些子文件夹的方法?使用bash脚本重命名文件夹或使用bash脚本添加分区如何?并排将此数据移动到S3,因此无法在那里执行shell脚本:)这就是这里的问题。(1)根据谷歌的说法,这似乎是可能的(2)您不必在S3上执行脚本,而是在您当前的数据上执行脚本,并生成一批
alter table…add partition…
Commands是否可以将这些分区作为单一日期进行查询?或者所有查询是否都需要像day=2、month=3和year=2016这样