美文网首页Hive
Hive数据类型和文件格式

Hive数据类型和文件格式

作者: NEO_X | 来源:发表于2019-02-15 21:33 被阅读0次

Hive数据类型和文件格式

Hive 支持关系数据库中的大多数基本的数据类型,同时也支持在关系数据库中很少出现的三种 数据集合 类型。
和大多数数据库相比,Hive具有一个独特的功能,就是对数据在文件中的编码方式具有相当大的灵活性,大多数据库对数据具有完全控制,也包括
对数据什么周期的控制,Hive将这些方面的控制权交给用户,以便更加容易的使用各种各样的工具来管理和处理数据。

基本数据类型

类型 描述 示例
TINYINT 1个字节8位有符号整数 1
SMALLINT 2字节16位有符号整数 1
INT 4字节32位有符号整数 1
BIGINT 8字节64位有符号整数 1
FLOAT 4字节32位单精度浮点数 1.0
DOUBLE 8字节64位双精度浮点数 1.0
BOOLEAN true,false true
STRING 字符串 ‘hao’
TIMESTAMP 整型,浮点或字符串 1327882394
BINARY 字节数组 -

所有这些数据类型都是对Java中的接口实现,因此这些类型具体行为细节和Java中对应的类型完全一致.

集合数据类型

类型 描述 示例
ARRAY 一组有序字段。字段的类型必须相同 Array(1,2)
MAP 一组无序的键/值对。键的类型必须是原子的,值可以是任何类型,同一个映射的键的类型必须相同,值得类型也必须相同 map('a',1,'b',2)
STRUCT 一组命名的字段。字段类型可以不同 Struct(‘a’,1,1,0)

HDFS文本文件数据编码

Hive中默认记录和字段分隔符

分隔符 描述
\n 对于文本文件来说,每行都是一条记录,因此换行符可以分割记录
^A(Ctrl+A) 用于分隔字段(列),在CREATE TABLE 语句中可以使用八进制编码\001表示
^B 用于分隔ARRAY或者STRUCT中的元素,或用于MAP中键值对之间的分隔,在CREATE TABLE语句中可以使用八进制\002表示
^C 用于MAP中键和值之间的分离。在CREATE TABLE中可以使用八进制编码\003表示
综合示例:
CREATE TABLE IF NOT EXISTS mydb.employees
(
    name STRING  COMMENT 'Employee name',
    salary FLOAT COMMENT 'Employee salary',
    subordinates ARRAY<STRING> COMMENT ' Names of subordinates',
    deducations  MAP<STRING,FLOAT> COMMENT ' Keys are deducations names , Values are percentags',
    address      STRUCT<street:STRING,city:STRING,state:STRING,zip:INT> COMMENT 'Home Address'
)
COMMENT 'the table of empoyee'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\001'
COLLECTION ITEMS TERMINATED BY '\002'
MAP KEYS TERMINATED BY '\003'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION '/user/hive/warehouse/mydb.db/employees';

ROW FORMAT DELIMITED  : 这组关键字必须些在其他子句之前(除STOREED AS .... 子句)
FIELDS TERMINATED BY  : 指定 列 分隔符,使用默认分隔符 ^A
COLLECTION ITEMS TERMINATED BY  : 指定 集合 元素间的分割符,使用默认分隔符 ^B
MAP KEYS TERMINATED BY : 指定MAP中 键和值之间的分离,使用默认分隔符 ^C
LINES TERMINATED BY    : 指定 行 分隔符,使用默认的换行符 \n
STORED AS TEXTFILE     : 指定Hive表的存储格式
LOCATION : 指定数据文件位置

Hive表存储格式

有4种主要的存储格式,使用依据为数据类型和分析需要。但是在绝大数情况下,使用ORC或Parquet,它们为大多数数据类型提供了最佳的压缩和速度优势。

存储格式 说明
Text file 使用数据已unicode编码的原始文本格式存储
Sequence file 数据以二进制键值对格式存储
RCFile 数据以列优化格式存储 (而不是行优化)
ORC 优化的行列格式, 可以显著提高 hive性能
Parquet 一种列格式, 可提供对其他 hadoop 工具的可移植性, 包括Hive, Drill, Impala, Crunch, and Pig

表类型

在Hive中包括2种类型的表,内部表和外部表。

内部表
创建方式,常规的 CREATE TABLE 语句。对于内部表,由Hive完全控制,如删除了内部表,在Hive的表定义和对应的表数据都会被删除。

外部表
创建方法, CREATE EXTERNAL TABLE IF NOT EXISTS Names_text ,关键字为 EXTRENAL 。对于外部表不由Hive控制,对于外部表只是使用表元数据信息而进入到原始文本数据中。
如果删除了外部表,只有表的元数据信息被删除,实际的数据还是会被保留。数据是驻留在Hive之外的,或者是需要保留原始数据的表。

更多信息 https://blue-shadow.top/tags/Hive/

相关文章

网友评论

    本文标题:Hive数据类型和文件格式

    本文链接:https://www.haomeiwen.com/subject/pqcveqtx.html