Hive 建表语句解析

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 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才会复制数据,否则不复制数据
相关文章
|
7月前
|
SQL 存储 分布式计算
Hive数据仓库设计与优化策略:面试经验与必备知识点解析
本文深入探讨了Hive数据仓库设计原则(分区、分桶、存储格式选择)与优化策略(SQL优化、内置优化器、统计信息、配置参数调整),并分享了面试经验及常见问题,如Hive与RDBMS的区别、实际项目应用和与其他组件的集成。通过代码样例,帮助读者掌握Hive核心技术,为面试做好充分准备。
673 0
|
6月前
|
SQL 缓存 关系型数据库
ClickHouse(19)ClickHouse集成Hive表引擎详细解析
Hive引擎允许对HDFS Hive表执行 `SELECT` 查询。目前它支持如下输入格式: -文本:只支持简单的标量列类型,除了 `Binary` - ORC:支持简单的标量列类型,除了`char`; 只支持 `array` 这样的复杂类型 - Parquet:支持所有简单标量列类型;只支持 `array` 这样的复杂类型
231 1
|
7月前
|
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 文件,可以直接查询字段内容,方便快捷。
395 3
|
7月前
|
SQL 关系型数据库 MySQL
Hive【基础知识 02-1】【Hive CLI 命令行工具使用】【准备阶段-建库、建表、导入数据、编写测试SQL脚本并上传HDFS】
【4月更文挑战第7天】Hive【基础知识 02-1】【Hive CLI 命令行工具使用】【准备阶段-建库、建表、导入数据、编写测试SQL脚本并上传HDFS】
93 0
|
7月前
|
SQL HIVE
Hive 建表以及使用
Hive 建表以及使用
105 0
|
7月前
|
SQL 监控 HIVE
Hive 全量表、增量表、拉链表 解析
Hive 全量表、增量表、拉链表 解析
812 0
|
7月前
|
SQL 数据采集 Java
Java【代码分享 02】商品全部分类数据获取(建表语句+Jar包依赖+树结构封装+获取及解析源代码)包含csv和sql格式数据下载可用
Java【代码分享 02】商品全部分类数据获取(建表语句+Jar包依赖+树结构封装+获取及解析源代码)包含csv和sql格式数据下载可用
84 0
|
SQL 大数据 Java
大数据Hive URL解析函数及侧视图
大数据Hive URL解析函数及侧视图
210 0
|
1月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
77 2
|
3天前
|
存储 设计模式 算法
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: • 模板方法模式 • 策略模式 • 命令模式 • 职责链模式 • 状态模式 • 观察者模式 • 中介者模式 • 迭代器模式 • 访问者模式 • 备忘录模式 • 解释器模式
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析

热门文章

最新文章

推荐镜像

更多