1.1数据类型
hive的数据类型同大多数关系型数据库一样,支持大多数的数据类型,也同样有自己独有的一些数据类型。具体如下:
1.1.1基本数据类型
数据类型 | 长度 |
TINYINT | 1字节 |
SMALLINT | 2字节 |
INT | 4字节 |
BIGINT | 8字节 |
FLOAT | 4字节 |
DOUBLE | 8字节 |
BOOLEAN | TRUE/FALSE |
STRING | 字符序列 |
1.1.2复杂数据类型
数据类型 | 说明 |
STRUCT | 结构体,存储方式:struct(first,last) |
MAP | 键值对集合,存储方式:map(keyName,keyValue,valueName,value) |
ARRAY | 数组,存储方式array(first,last) |
1.2文件存储格式
hive中表都是文件的形式存储在文件系统中的,hive支持的存储格式有如下几种:
(1)TEXTFILE
TEXTFILE是系统默认的存储格式,也就是通常所说的文本格式,该种格式对数据不进行压缩,因此,缺点就是磁盘占用 比较大。
(2)SEQUENCEFILE
SEQUENCEFILE是Hadoop提供的一种二进制格式,具有可分割、可压缩的特点。
(3)RCFILE
RCFILE是一种行列存储相结合的存储方式,先按行存储,确保同一条数据在一个块上,然后按列存储,有利于数据的压缩的快速读取。
(4)PARQUET
PARQUET是一种列式存储格式,有兴趣的可以查看http://lastorder.me/tag/parquet.html
1.3数据格式
常见的格式有CSV(以逗号为分隔符)和TSV(以制表符为分隔符),另外hive还支持一下分隔符:
分隔符 | 说明 |
\n | 换行符,默认值 |
^A | 列分隔符,文本中以八进制\001表示 |
^B | 作为集合或键值对中的分隔符,文本中以八进制\002表示 |
^C | 最为键值对的分隔符,文本中以八进制\003表示 |
1.4Hive中的数据库以及表
hive中的数据库本质上就是个目录,数据库中的表就是子目录。我们前面安装时已经说过,hive中的数据库以及表存储在hdfs文件系统中。感兴趣的可以查看存储hive信息的数据库表中,会有对应hive数据库名称与hdfs路径。
hive中的表可以分为四类:管理表、外部表、分区表和分桶表。
管理表,创建的表如果没有指明,都是hive中的管理表,这类表由hive负责管理,删除时将同时删除标的元数据和数据。
外部表,外部表的作用是可以一份数据可以被共享使用,关键字EXTERNAL声明为外部表,删除表时只删除标的元数据,另外,在创建外部表时还可以使用Location指定存放路径。
分区表,顾名思义就是可以对表按照相应的规则进行存储,比如,可以将表进行水平切分等。分区表通过关键字PARTITIONED BY进行分区。
分桶表,是对数据进行哈希取值,然后放到不同文件中存储,通过关键字clustered by 进行分桶操作。