开发十年,就只剩下这套Java开发体系了 >>>
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”)//添加分区信息