内部表
-- 创建内部表
create table user1(
id int comment '用户id',
username varchar(20) comment '账户名称',
password varchar(255) comment '账户密码',
realname varchar(20) comment '真实姓名',
age int comment '年龄',
address varchar(255) comment '住址',
create_time string comment '创建日期'
)
row format delimited
fields terminated by '\t'
lines terminated by '\n'
-- collection items terminated by '\001'
-- map keys terminated by '\002'
stored as avro
location '/hive/warehouse/testing.db/user1';
外部表
-- 创建外部表
-- 删除外部表对应hdfs源数据: hadoop fs -rm -r /hive/warehouse/testing.db/user1
create external table user1(
id int comment '用户id',
username varchar(20) comment '账户名称',
password varchar(255) comment '账户密码',
realname varchar(20) comment '真实姓名',
age int comment '年龄',
address varchar(255) comment '住址',
create_time string comment '创建日期'
)
row format delimited
fields terminated by '\t'
lines terminated by '\n'
-- collection items terminated by '\001'
-- map keys terminated by '\002'
stored as avro
location '/hive/warehouse/testing.db/user1';
临时表
-- 创建临时表
create temporary table user1(
id int comment '用户id',
username varchar(20) comment '账户名称',
password varchar(255) comment '账户密码',
realname varchar(20) comment '真实姓名',
age int comment '年龄',
address varchar(255) comment '住址',
create_time string comment '创建日期'
)
row format delimited
fields terminated by '\t'
lines terminated by '\n'
-- collection items terminated by '\001'
-- map keys terminated by '\002'
stored as avro
location '/hive/warehouse/testing.db/user1';
命令行显示当前数据库(当前有效)
set hive.cli.print.current.db=true;
使用场景
外部表:重要数据,高容错,数据共享(删除表不删除物理数据)
内部表:数据清洗转换的中间结果(删除表时元数据和物理数据都删除)
临时表:测试使用,当前session有效,退出自动删除(不支持分区和索引)
注意事项
Hive的存储格式有六种:AVRO、ORC、PARQUET、RCFILE、SEQUENCEFILE、TEXTFFILE
Hive创建表不指定数据格式时,默认是 TEXTFILE 格式