HIVE建表语句:
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
[CLUSTERED BY (col_name, col_name, ...)
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
[ROW FORMAT row_format]
[STORED AS file_format]
[LOCATION hdfs_path]
CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXIST 选项来忽略这个异常EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION)(当删除外部表时,外部表的数据不会删除;删除分区时,对应的分区数据也不会从HDFS上删除)
CREATE EXTERNAL TABLE ext_tbl
(
dept INT COMMENT '部门',
name STRING COMMENT '名称',
gender STRING COMMENT '性别'
)
COMMENT 'This is an external table'
PARTITIONED BY (
id INT COMMENT '编号')
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054'
STORED AS TEXTFILE
LOCATION
'/user/hadoop/warehouse/ext_tbl'
;
LIKE 允许用户复制现有的表结构,但是不复制数据,即创建一个与当前表结构完全相同的空表。
CREATE TABLE comp_tbl LIKE ext_tbl;
COMMENT可以为表与字段增加描述 PARTITION 表示分区表,后面括号里的字段为分区字段,可有一个或多个 CLUSTERD 表示 BUCKET表,按SORTED字段排序 ROW FORMAT:
DELIMITED [FILEDS TERMINATED BY char][COLLECTION ITEMS TERMINATED BY char][MAP KEYS TERMINATED BY char][LINES TERMINATED BY char]
|SERDE serde_name [WITH SERDEPROPETIES(propety_name=property_value,propety_name=property_value,…)]
如果建表的时候没有指定ROW FORMAT系统会默认为使用SERDE,相关内容可参考链接点击打开链接;
[ROW FORMAT DELIMITED]关键字,是用来设置创建的表在加载数据的时候,支持的列分隔符。
比如:ROW FORMAT DELIMITED
FILEDS TERMINATED BY '\001'
COLLECTION ITEMS TERMINATED BY '\002'
MAP KEYS TERMINATED BY '\003'
表示不同列之间用一个'\001'分割,集合(例如array,map)的元素之间以'\002'隔开,map中key和value用'\003'分割。
SORTED AS
SEQUENCEFILE
|TEXTFILE
|RCFILE
|ORC
|INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname
只有TEXTFILE表能直接加载数据(如本地load数据,外部表直接加载路径数据),hadoop默认支持的压缩格式也只能用TEXTFILE表直接读取,即其他形式的表都要通过insert table as select from text_table来导入数据;如果数据需要压缩,需使用SEQUENCEFILE;RCFILE是一种行列存储相结合的存储方式;ORC是RCFILE的升级版。更详细的源文件存储格式可参考HIVE的源文件存储格式
ORC三种创建/使用方式:
1、 STORED AS ORC;
2、ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde' with serdeproperties('serialization.null.format' = '') STORED AS ORC;
3、 ROW FORMAT DELIMITED NULL DEFINED AS '' STORED AS ORC;