4.5 创建表
1、语法
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] 表名(
列名 数据类型 [COMMENT ‘该列注释信息’],
列名 数据类型,
列名 数据类型,
。。。。。。
)
[ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘分隔符’]
[COLLECTION ITEMS TERMINATED BY ‘分隔符’]
[MAP KEYS TERMINATED BY ‘分隔符’]
[LINES TERMINATEF BY ‘分隔符’]
[LOCATION ‘指定HDFS上的路径’]
[COMMENT ‘该表注释信息’]
[PARTITIONED BY (虚拟列名 数据类型,虚拟列名 数据类型,.....)]
[CLUSTERED BY (列名,列名,......)]
[SORTED BY (列名,列名,......) INTO n BUCKETS]
[STORED AS TEXTFILE或者SEQUENCEFILE或者RCFILE]
[AS SELECT 查询语句]
[LIKE 表名]
2、参数说明
EXTERNAL:Hive默认创建的是内部表(管理表),可以通过此关键字创建外部表;当删除管理表时,HIVE中的元数据和HDFS上的数据都会被删除,而删除外部表只会删除HIVE中的元数据,不会删除HDFS上的数据
IF NOT EXISTS:如果创建一个表,而该表名已经存在则会报错,为了提高代码的健壮性,加此语句
COMMENT:可以为列或整个表添加注释信息
ROW FORMAT DELIMITED TERMINATED BY ‘分隔符’:指定列与列之间的分隔符
COLLECTION ITEMS TERMINATED BY ‘分隔符’:指定MAP、STRUCT、ARRAY中元素之间的分隔符
MAP KEYS TERMINATED BY ‘分隔符’:指定MAP中键值对(key-value)间的分隔符
LINES TERMINATED BY ‘’分隔符:指定行与行之间的分隔符
LOCATION ‘指定HDFS上的路径’:可以自定义表在HDFS上的具体位置
PARTITIONED BY (虚拟列名 数据类型,虚拟列名 数据类型,…):可以指定分区
CLUSTERED BY (列名,列名,…):可以指定分桶
SORTED BY (列名,列名,列名,…) into n buckets:指定桶的个数及桶内排序
STORED AS TEXTFILE或者SEQUENCEFILE或者RCFILE:可以指定存储类型
存储类型说明
TEXTFILE:纯文本存储类型
SEQUENCEFILE:二进制序列存储类型,如果需要压缩,可以选择此存储格式
RCFILE:列式格式存储
AS SELECT 查询语句:根据查询结果来创建表,会复制查询到的数据
LIKE 表名:根据另一个表的结构来创建此表,但不会复制该表的数据