HIVE使用手册(五) DDL数据定义语言

DDL全称:Data Definition Leaguage

一、概述

包括 表、索引、函数、视图

create、drop、truncate、alter、show、describe、partition语句

 

关于建表是还会涉及到external关键字,区分内外表

内表为hive管理数据。内表又称为托管表

二、行格式和SERDE

**什么是SerDe?

 

SerDe是“Serializer and Deserializer”的简称。 序列化和反序列化

Hive使用SerDe(和FileFormat)来读写表行。

 

文本格式

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'

WITH SERDEPROPERTIES

“input.regex”= “<正则表达式>”

STORED AS TEXTFILE;

 

示例:CREATE TABLE apachelog (

host STRING, identity STRING, user STRING, 、 time STRING, request STRING, status STRING,

size STRING, referer STRING, agent STRING)

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'

WITH SERDEPROPERTIES (

"input.regex" = "([^]*) ([^]*) ([^]*) (-|\\[^\\]*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)(?: ([^ \"]*|\".*\") ([^ \"]*|\".*\"))?")

STORED AS TEXTFILE;

存储为JSON格式的纯文本文件。

JSON

ROW FORMAT SERDE

'org.apache.hive.hcatalog.data.JsonSerDe'

STORED AS TEXTFILE

示例:CREATE TABLE my_table(a string, b bigint, ...)

ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'

STORED AS TEXTFILE;

存储为CSV / TSV格式的纯文本文件。

CREATE TABLE my_table(a string, b string, ...)

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'

WITH SERDEPROPERTIES (

"separatorChar" = "\t",

"quoteChar" = "'",

"escapeChar" = "\\"

)

STORED AS TEXTFILE;

三、分区分桶

横向分区,纵向分桶

 

分区:每个分区都为一个物理文件夹,对于一个不在表中存在的字段进

行分区,即分区的字段为虚字段,在这种水平的分层后数据是完全

物理隔离的之间没有关系

分桶:各分桶相互独立,最终形成一个完整的数据块,分桶采用的是实

字段每个分桶即为一个文件,按字段的哈希值分桶

四、临时表

临时表只对当前会话可见。数据将被存储在用户的临时目录,并在会话结束时删除。

临时表有以下限制:

不支持分区列。

不支持创建索引。

五、截断表 truncate

删除表或分区(一个或多个分区)的所有行。如果启用了文件系统的垃圾回收,数据将被回收,否则它们会被直接删除(从Hive2.2.0的HIVE-14626)。目前,目标表应该是本机的/托管表,否则将引发异常。对于分区表,用户可以指定partition_spec一次截断多个分区,或者省略partition_spec截断表中的所有分区。

 

你可能感兴趣的:(HIVE使用手册(五) DDL数据定义语言)