Hive 建表语句解析

本文涉及的产品
云解析DNS,个人版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: Hive 建表语句

前言

在上篇文章《Hive 浅谈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 [column_constraint_specification] [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)
  | JSONFILE    -- (Note: Available in Hive 4.0.0 and later)
  | INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname
column_constraint_specification:
  : [ PRIMARY KEY|UNIQUE|NOT NULL|DEFAULT [default_value]|CHECK  [check_expression] ENABLE|DISABLE NOVALIDATE RELY/NORELY ]
default_value:
  : [ LITERAL|CURRENT_USER()|CURRENT_DATE()|CURRENT_TIMESTAMP()|NULL ] 
constraint_specification:
  : [, PRIMARY KEY (col_name, ...) DISABLE NOVALIDATE RELY/NORELY ]
    [, PRIMARY KEY (col_name, ...) DISABLE NOVALIDATE RELY/NORELY ]
    [, CONSTRAINT constraint_name FOREIGN KEY (col_name, ...) REFERENCES table_name(col_name, ...) DISABLE NOVALIDATE 
    [, CONSTRAINT constraint_name UNIQUE (col_name, ...) DISABLE NOVALIDATE RELY/NORELY ]
    [, CONSTRAINT constraint_name CHECK [check_expression] ENABLE|DISABLE NOVALIDATE RELY/NORELY ]
  • TEMPORARY : 表示创建的是临时表,Hive 0.14.0 版本开始支持
  • EXTERNAL:表示创建的是外部表,注意:默认没参数时创建内部表;有参数创建外部表。删除表,内部表的元数据和数据都会被删除,外部表元数据被删除,但HDFS的数据不会被删除。内部表数据由Hive自身管理,外部表数据由HDFS管理。
  • COMMENT:为表和列添加注释
  • data_type:数据类型Hive支持如下5种数据类型:
  • primitive_type:基本数据类型
  • TINYINT:微整型
  • SMALLINT:短整型
  • INT:整型
  • BIGINT:长整型
  • BOOLEAN:布尔类型
  • FLOAT:单精度浮点数
  • DOUBLE:双精度浮点数
  • DOUBLE PRECISION :支持精确度的双精度浮点数,Hive 2.2.0 版本开始支持
  • STRING:字符串
  • BINARY:二进制数据,Hive 0.8.0 版本开始支持
  • TIMESTAMP:时间戳,Hive 0.8.0 版本开始支持
  • DECIMAL:十进制数字,Hive 0.11.0 版本开始支持
  • DECIMAL(precision, scale):支持精确度的十进制数字,Hive 0.13.0 版本开始支持
  • DATE:日期,Hive 0.12.0 版本开始支持
  • VARCHAR :字符串类型,Hive 0.12.0 版本开始支持
  • CHAR :定长字符串类型,Hive 0.13.0 版本开始支持
  • array_type:数组类型
    格式:ARRAY < data_type >,数组包含一种任意数据类型。
  • map_type:Map类型
    格式:MAP < primitive_type, data_type >,key必须是基本数据类型,value可以是任意数据类型
  • struct_type:结构体类型
    格式:STRUCT < col_name : data_type [COMMENT col_comment], ...>,可以包含多个形如:列名:数据类型 的列,之间使用英文逗号分隔
  • union_type : Union类型
    格式:UNIONTYPE < data_type, data_type, ... >,可以包含多个任意数据类型的组合体。注意:Hive 0.7.0 版本才开始支持union_type类型。
  • column_constraint_specification:列约束规范主要有如下可选约束:
  • PRIMARY KEY:主键,注意:一个表只允许有一个主键
  • UNIQUE:值唯一
  • NOT NULL:值不为NULL
  • DEFAULT [default_value] :设置默认值
  • CHECK [check_expression] :检查
  • ENABLE|DISABLE NOVALIDATE RELY/NORELY :指定是否开启约束
  • ENABLE NOVALIDATE:启用约束,仅对新加入的数据强制执行约束,而不管表中的现有数据
  • DISABLE NOVALIDATE:关闭约束,可以对约束列的数据进行修改等操作
  • RELY/NORELY:可选项,RELY表示希望HIVE CBO(COST BASED OPTIMIZE)使用约束信息来获得更好的统计,删除不必要的连接( JOIN ELIMINATION),得到更好的整体执行计划;NORELY表示不会使用HIVE CBO。
  • constraint_specification:另外一种形式的约束,注意:该语句和定义字段是平行的
  • PRIMARY KEY (col_name, …):可以指定多个列适用于某种约束
  • CONSTRAINT constraint_name:可以指定约束名
  • FOREIGN KEY (col_name, …) REFERENCES table_name(col_name, …):可以指定其他表的主键为其外键
  • PARTITIONED BY:表示创建分区表 ,注意:分区字段不能是表中定义好的字段,通常根据 日期或者城市 等进行分区
  • CLUSTERED BY:表示创建分桶表,还可以在分桶列上进行SORTED BY排序
  • SKEWED BY:对某些列进行数据倾斜处理,注意:Hive 0.10.0 版本开始支持
  • row_format:行数据格式
  • DELIMITED:指定数据文件中的分隔符(默认单字节),例如逗号、制表符、空格等等,默认的分隔符为\001
  • FIELDS TERMINATED BY char :指定字段(列)之间的分隔符
  • COLLECTION ITEMS TERMINATED BY char:指定集合元素之间的分隔符
  • MAP KEYS TERMINATED BY char:指定map元素kv之间的分隔符
  • LINES TERMINATED BY char:指定行分隔符,默认是换行符
  • NULL DEFINED AS char:指定替换空值的字符,注意:Hive 0.13 版本才开始支持
  • SERDE serde_name:SerDe是英文Serialize和Deserilize的组合缩写,是Hive提供用来解析和加载不同类型的数据文件,默认提供了多种SerDe,常用的有ORCSerde 、RegexSerde、JsonSerDe等
  • file_format:文件格式支持如下文件格式:
  • SEQUENCEFILE:二进制序列化文件
  • TEXTFILE:文本格式,默认值,可以通过配置项hive.default.fileformat修改默认文件格式
  • RCFILE:RC文件格式,Hive 0.6.0 版本开始支持
  • ORC:ORC文件格式,Hive 0.11.0 版本开始支持
  • PARQUET:parquet文件格式,Hive 0.13.0 版本开始支持
  • AVRO :AVRO文件格式,Hive 0.14.0 版本开始支持
  • JSONFILE:json文件格式,Hive 4.0.0 版本开始支持
  • INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname:自定义输入输出文件格式
  • LOCATION:指定表的数据文件在hdfs上的存储路径
  • TBLPROPERTIES:指定配置项
  • AS select_statement :根据查询结果创建表,即创建表过程中同时插入查询结果数据,注意:外部表不支持
  • LIKE:允许用户复制现有的表结构,若有LOCATION才会复制数据,否则不复制数据
相关文章
|
1月前
|
SQL 存储 分布式计算
Hive数据仓库设计与优化策略:面试经验与必备知识点解析
本文深入探讨了Hive数据仓库设计原则(分区、分桶、存储格式选择)与优化策略(SQL优化、内置优化器、统计信息、配置参数调整),并分享了面试经验及常见问题,如Hive与RDBMS的区别、实际项目应用和与其他组件的集成。通过代码样例,帮助读者掌握Hive核心技术,为面试做好充分准备。
|
2天前
|
SQL 缓存 关系型数据库
ClickHouse(19)ClickHouse集成Hive表引擎详细解析
Hive引擎允许对HDFS Hive表执行 `SELECT` 查询。目前它支持如下输入格式: -文本:只支持简单的标量列类型,除了 `Binary` - ORC:支持简单的标量列类型,除了`char`; 只支持 `array` 这样的复杂类型 - Parquet:支持所有简单标量列类型;只支持 `array` 这样的复杂类型
13 1
|
1月前
|
SQL 存储 JSON
Hive 解析 JSON 字符串数据的实现方式
Hive 提供 `get_json_object` 函数解析 JSON 字符串,如 `{&quot;database&quot;:&quot;maxwell&quot;}`。`path` 参数使用 `$`、`.`、`[]` 和 `*` 来提取数据。示例中展示了如何解析复杂 JSON 并存储到表中。此外,Hive 3.0.0及以上版本内置 `JsonSerDe` 支持直接处理 JSON 文件,无需手动解析。创建表时指定 `JsonSerDe` 序列化器,并在 HDFS 上存放 JSON 文件,可以直接查询字段内容,方便快捷。
|
1月前
|
SQL 关系型数据库 MySQL
Hive【基础知识 02-1】【Hive CLI 命令行工具使用】【准备阶段-建库、建表、导入数据、编写测试SQL脚本并上传HDFS】
【4月更文挑战第7天】Hive【基础知识 02-1】【Hive CLI 命令行工具使用】【准备阶段-建库、建表、导入数据、编写测试SQL脚本并上传HDFS】
38 0
|
1月前
|
SQL HIVE
Hive 建表以及使用
Hive 建表以及使用
50 0
|
1月前
|
SQL 监控 HIVE
Hive 全量表、增量表、拉链表 解析
Hive 全量表、增量表、拉链表 解析
284 0
|
1月前
|
SQL 数据采集 Java
Java【代码分享 02】商品全部分类数据获取(建表语句+Jar包依赖+树结构封装+获取及解析源代码)包含csv和sql格式数据下载可用
Java【代码分享 02】商品全部分类数据获取(建表语句+Jar包依赖+树结构封装+获取及解析源代码)包含csv和sql格式数据下载可用
51 0
|
9月前
|
SQL 大数据 Java
大数据Hive URL解析函数及侧视图
大数据Hive URL解析函数及侧视图
125 0
|
1月前
|
SQL 数据采集 数据挖掘
大数据行业应用之Hive数据分析航班线路相关的各项指标
大数据行业应用之Hive数据分析航班线路相关的各项指标
132 1
|
1月前
|
SQL 分布式计算 数据库
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
144 0

推荐镜像

更多