hive分区表的创建+外部表

开发十年,就只剩下这套Java开发体系了 >>>   hot3.png

hive表的创建:

1.外部表+分区表

create externaltable hive_2018(

id string,

akc194 string

)

partitioned by(cysj string)

row format delimited fields terminated by '|' lines terminated by '\n' stored as textfile;

load data local inpath '/root/partition.txt' into table hive_2018 partition(cysj='2017');

备注:1分区字段不能和表已有字段重复

          2.创建外部分区表,不能直接使用location,需要单独在使用load指令。

---外部表
create external table fz_external_table(id int,name string,age int,tel string)
row format delimited fields terminated by '\t' lines terminated by '\n' stored as textfile
location '/user/hive/external/fz_external_table';

分区表和内部表的区别:

1、在导入数据到外部表,数据并没有移动到自己的数据仓库目录下(如果指定了location的话),也就是说外部表中的数据并不是由它自己来管理的!而内部表则不一样;

     2、在删除内部表的时候,Hive将会把属于表的元数据和数据全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据是不会删除的!

分区表的备注:

分区表创建后,直接将文件放入分区表的文件目录,分区表是不会自动有数据的,还需要对添加分区信息后分区表才可以读取到数据。在hive中使用指令:msck repair table xxx;(修复分区表)或者

alter table xxx add partition(month=“201801”)//添加分区信息

你可能感兴趣的:(hive分区表的创建+外部表)