分区无法理解

2cmtqfgy  于 2021-06-29  发布在  Hive
关注(0)|答案(2)|浏览(461)

我的输入数据如下:

1,srinivas,courtthomas,memphis
2,vindhya,courtthomas,memphis
3,srinivas,courtthomas,kolkata
4,vindhya,courtthomas,memphis

我创建了以下查询:

create EXTERNAL table seesaw (id int,name string,location string) partitioned by (address string) row format delimited fields terminated by ',' lines terminated by '\n' stored as textfile LOCATION '/seesaw';

LOAD DATA INPATH '/sampledoc' OVERWRITE INTO TABLE seesaw PARTITION (address = 'Memphis');

当我试图获取我的查询时,它如下所示:

Select * from seesaw;                                                                     
OK
1   srinivas    courtthomas Memphis
2   vindhya courtthomas Memphis
3   srinivas    courtthomas Memphis
4   vindhya courtthomas Memphis

我真的不明白最后一排是怎么显示孟菲斯的。

uinbv5nw

uinbv5nw1#

仔细阅读代码:

create EXTERNAL table seesaw (id int,name string,location string)

注意只有三列, id , name 以及 location .
但是你的数据,

1,srinivas,courtthomas,memphis
2,vindhya,courtthomas,memphis
3,srinivas,courtthomas,kolkata
4,vindhya,courtthomas,memphis

有四列。这里有些可疑。

LOAD DATA INPATH '/sampledoc'
  OVERWRITE INTO TABLE seesaw
  PARTITION (address = 'Memphis');

你要求划分一个只包含 courtthomasMemphis . 结果让人大吃一惊的不是你想要的。

fd3cxomn

fd3cxomn2#

如果您使用的是外部表,则需要为每个分区手动创建文件夹,即在您的情况下-创建两个文件夹[address=memphis]和[address=kolkata],并将相应的输入数据文件复制到相应的文件夹下,然后将分区添加到元数据中,如下所示:

ALTER TABLE seesaw ADD PARTITION(address='Memphis');
ALTER TABLE seesaw ADD PARTITION(address='kolkata');

请参阅本文,了解如何执行此操作的简单示例-配置单元外部表和分区

相关问题