先准备一个stus.txt数据:
Tom,male,20
Jim,male,21
jone,female,20
内部表
内部表又称管理表
1.在hive中新建一个张内部表:
create table stu_m(
name string,
gender string,
age int
)
row format delimited
fields terminated by ','
;
因为在beeline的命令行中书写sql,并不友好,可以将create语句书写到一个stu_m.sql的文件中,上传到linux虚拟机的/apps目录下,
然后使用source命令执行sql语句实现建表:
source /apps/stu_m.sql;
如图所示:
可以通过desc formatted命令查看表结构详细信息和所存储的hdfs文件位置信息。
desc formatted stu_m;
2.上传数据
load data local inpath '/apps/stus.txt' overwrite into table stu_m;
3.验证:
select * from stu_m;
Hdfs上位置:
外部表:
外部表在创建的时候与内部表相比有了一个external 关键字,并且要指定存储在hdfs的位置,其余的load、select与内部标一致。
1.创建外部表:
create external table stu_e(
name string,
gender string,
age int
)
row format delimited
fields terminated by ','
location '/my_hive/stu_e'
;
其中location '/my_hive/stu_e’指定的是一个hdfs的路径。
2.load上数据
Hdfs上位置:
使用drop删除内部表和外部表,会发现内部表删除后,所对应的hdfs数据也消失,而外部表删除后,仅仅是删除了元数据,hdfs数据并没有消失。