Hive创建表的三种形式

Hive创建表的三种形式,是根据实际也的业务需要进行表的设计及创建,参考Hive官方文档
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL

语法

《Hive创建表的三种形式》

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name — (Note: TEMPORARY available in Hive 0.14.0 and later)
[(col_name data_type [COMMENT col_comment], … [constraint_specification])]
[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]
[SKEWED BY (col_name, col_name, …) — (Note: Available in Hive 0.10.0 and later)]
ON ((col_value, col_value, …), (col_value, col_value, …), …)
[STORED AS DIRECTORIES]
[
[ROW FORMAT row_format]
[STORED AS file_format]
| STORED BY ‘storage.handler.class.name’ [WITH SERDEPROPERTIES (…)] — (Note: Available in Hive 0.6.0 and later)
]
[LOCATION hdfs_path]
[TBLPROPERTIES (property_name=property_value, …)] — (Note: Available in Hive 0.6.0 and later)
[AS select_statement]; — (Note: Available in Hive 0.5.0 and later; not supported for external tables)

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
LIKE existing_table_or_view_name
[LOCATION hdfs_path];

data_type
: primitive_type
| array_type
| map_type
| struct_type
| union_type — (Note: Available in Hive 0.7.0 and later)

primitive_type
: TINYINT
| SMALLINT
| INT
| BIGINT
| BOOLEAN
| FLOAT
| DOUBLE
| DOUBLE PRECISION — (Note: Available in Hive 2.2.0 and later)
| STRING
| BINARY — (Note: Available in Hive 0.8.0 and later)
| TIMESTAMP — (Note: Available in Hive 0.8.0 and later)
| DECIMAL — (Note: Available in Hive 0.11.0 and later)
| DECIMAL(precision, scale) — (Note: Available in Hive 0.13.0 and later)
| DATE — (Note: Available in Hive 0.12.0 and later)
| VARCHAR — (Note: Available in Hive 0.12.0 and later)
| CHAR — (Note: Available in Hive 0.13.0 and later)

array_type
: ARRAY < data_type >

map_type
: MAP < primitive_type, data_type >

struct_type
: STRUCT < col_name : data_type [COMMENT col_comment], …>

union_type
: UNIONTYPE < data_type, data_type, … > — (Note: Available in Hive 0.7.0 and later)

row_format
: DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char]
[MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]
[NULL DEFINED AS char] — (Note: Available in Hive 0.13 and later)
| SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, …)]

file_format:
: SEQUENCEFILE
| TEXTFILE — (Default, depending on hive.default.fileformat configuration)
| RCFILE — (Note: Available in Hive 0.6.0 and later)
| ORC — (Note: Available in Hive 0.11.0 and later)
| PARQUET — (Note: Available in Hive 0.13.0 and later)
| AVRO — (Note: Available in Hive 0.14.0 and later)
| INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname

constraint_specification:
: [, PRIMARY KEY (col_name, …) DISABLE NOVALIDATE ]
[, CONSTRAINT constraint_name FOREIGN KEY (col_name, …) REFERENCES table_name(col_name, …) DISABLE NOVALIDATE

方式一

基础创建法

CREATE TABLE IF NOT EXISTS default.merit_log20180304
(
ip string COMMENT ‘remote ip address’,
user string ,
req_url string COMMENT ‘user request url’
)
COMMENT ‘merit web access log’
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘ ‘
STORED AS TEXTFILE
LOCATION ‘/user/hive/warehouse/merit_log20180304’
说明:
COMMENT ‘merit web access log’:表描述
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘ ‘:行数据边界以空格作为分割线
STORED AS TEXTFILE:作为文本文件存储
LOCATION ‘user/merit/hive/warehouse/merit_log20180304’:文件在hdfs中的存储路径

《Hive创建表的三种形式》 create

方式二

根据已有表拆分字段建表,例如只创建某个母表中的3个字段的子表。

CREATE TABLE IF NOT EXISTS default.merit_log20180304_rs
as select ip ,user from default.merit_log20180304;
说明:as 是关键字
as select ip ,user from default.merit_log20180304; 创建merit_log20180304_rs的查询语句

方式三

根据已存在的表创建新表,like是关键字

语法:CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
LIKE existing_table_or_view_name
[LOCATION hdfs_path];

样例:
CREATE TABLE IF NOT EXISTS default.merit_log20180305
LIKE merit_log20180304
LOCATION ‘/user/hive/warehouse/merit_log20180305’;

加载数据到表中

  • 创建日志表merit_log.txt并添加数据
    命令:vi merit_log.txt

    《Hive创建表的三种形式》 image.png

  • 加载merit_log文件到表
    命令:load data local inpath ‘/opt/datas/merit_log.txt’ into table default.merit_log20180304

    《Hive创建表的三种形式》 inpath

  • 查看结果
    命令:select * from merit_log20180304 ;

    《Hive创建表的三种形式》

    原文作者:志辉聊码
    原文地址: https://www.jianshu.com/p/3fa967cb4309
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞