目录
一、Hive建表语法
二、内部表外部表
三、分区表
四、分桶表
Hive在建表时可指定内部表、外部表、分区表和分桶表,所以在学习这四种表之前,先一起了解Hive建表语法
一、Hive建表语法
Hive建表方式共有三种:直接建表法、查询建表法、like建表法,下面讲解直接建表法
’[]’ 表示可选,’|’ 表示二选一
创建表的语句:
Create [EXTERNAL] TABLE [IF NOT EXISTS] table_name
//EXTERNAL 关键字可以让用户创建一个外部表,如果不指定关键字EXTERNAL则为内部表
//如:create table IF NOT EXISTS test_bucket
[(col_name data_type [COMMENT col_comment], ...)]
//col_nam表字段,data_type字段类型,[COMMENT col_comment]字段注释 , ...为其他字段
//如:(word string,num bigint )
[COMMENT table_comment]
//表注释,COMMENT关键字,table_comment表解释具体内容
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
//PARTITIONED BY分区
[CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC],...)]INTO num_buckets BUCKETS]
//分桶,通过 clustered by(字段名) into bucket_num buckets 分桶,意思是根据字段名分成bucket_num个桶
//如:clustered by(id) into 4 buckets
[ROW FORMAT row_format]
//加载数据文件到hive表时,数据文件字段于字段的分隔符
//如:row format delimited fields terminated by '\t'
[STORED AS file_format]
[LOCATION hdfs_path]
//指定表存放的HDFS位置,如果不指定存放在默认路径,内部表默认路径/user/hive/warehouse
建表语句解释:
CREATE TABLE 创建一个指定名字的表。
EXTERNAL 关键字可以让用户创建一个外部表,无EXTERNAL 关键字则为内部表。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。
有分区的表可以在创建的时候使用 PARTITIONED BY 语句。一个表可以拥有一个或者多个分区,每一个分区单独存在一个目录下。
案例:
//01-创建orders_part外部表
create EXTERNAL table orders_part(
order_id string comment '订单编号',
user_id string comment '客户号',
order_number string comment '订单数量',
order_date string comment '下单时间'
)
comment '测试_创建orders_part表'
partitioned by(order_date string)
row format delimited fields terminated by ','
//02-创建分桶表
create table test_bucket (
id int comment 'ID',
name string comment '名字'
)
comment '测试分桶'
clustered by(id) in