HIVE建表

xiaoxiao2021-02-28  79

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;

转载请注明原文地址: https://www.6miu.com/read-24338.html

最新回复(0)