Hive 在预分区数据上创建外部表
我有如下数据:Hive 在预分区数据上创建外部表,hive,Hive,我有如下数据: /user/me/output/ key1/ part_00000 part_00001 key2/ part_00000 part_00001 key3/ part_00000 part_00001 数据由“key_ux”预先分区,“part_x*”文件以“a,b,key_x”的形式包含我的数据。我创建一个外部表: CREATE EXTERNAL TABLE tester ( a STRING, b INT
/user/me/output/
key1/
part_00000
part_00001
key2/
part_00000
part_00001
key3/
part_00000
part_00001
数据由“key_ux”预先分区,“part_x*”文件以“a,b,key_x”的形式包含我的数据。我创建一个外部表:
CREATE EXTERNAL TABLE tester (
a STRING,
b INT
)
PARTITIONED BY (key STRING)
ROW FORMAT
DELIMITED FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION '/user/me/output/';
但SELECT*不提供任何输出。如何创建将读取此分区数据的外部表?您必须更改目录结构,以确保配置单元读取文件夹。应该是这样的
/user/me/output/
key=key1/
part_00000
part_00001
key=key2/
part_00000
part_00001
key=key3/
part_00000
part_00001
完成此操作后,可以使用您提到的查询在此基础上创建一个表
CREATE EXTERNAL TABLE tester (
a STRING,
b INT
)
PARTITIONED BY (key STRING)
ROW FORMAT
DELIMITED FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION '/user/me/output/';
您还必须显式地添加分区,或者对表执行msck修复,以使用配置单元元数据加载分区。其中任何一项都可以:
msck repair table tester;
或
完成此操作后,查询将返回文件夹中的输出
Alter table tester ADD PARTITION (key = 'key1');
Alter table tester ADD PARTITION (key = 'key2');
Alter table tester ADD PARTITION (key = 'key3');