Hive 高级操作(一)之数据类型(原子,array,map,struct,union)
1、原子数据类型
| 数据类型 | 长度 | 描述 |
|---|---|---|
| TinyInt | 1 个字节的有符号整数 | -128~127 |
| SmallInt | 2 个字节的有符号整数 | -32768~32767 |
| Int | 4 个字节的有符号整数 | -2147483648~2147483647 |
| BigInt | 8 个字节的有符号整数 | -9223372036854775808~9223372036854775807 |
| Boolean | 布尔类型,true 或 false | true,false |
| Float | 单精度浮点数 | |
| Double | 双精度浮点数 | |
| String | 字符串 | |
| TimStamp | 时间戳,整数值 | 支持 Unix TimeStamp,可以达到纳秒精度 |
(1)Hive 支持日期类型(老版本不支持),在 Hive 里日期一般都是用字符串来表示的,而常用的日期格式转化操作则是通过自定义函数进行操作,当然也可以直接指定为日期类型。
(2)Hive 是用 Java 开发的,Hive 里的基本数据类型和 java 的基本数据类型也是一一对应的,除了 String 类型。
(3)有符号的整数类型:TINYINT、SMALLINT、INT 和 BIGINT 分别等价于 Java 的 Byte、Short、Int 和 Long 原子类型,它们分别为 1 字节、2 字节、4 字节和 8 字节有符号整数。
(4)Hive 的浮点数据类型 FLOAT 和 DOUBLE,对应于 Java 的基本类型 Float 和 Double 类型。
(5)Hive 的 BOOLEAN 类型相当于 Java 的基本数据类型 Boolean。
(6)Hive 的 String 类型相当于数据库的 Varchar 类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储 2GB 的字符数。


2、复杂数据类型
(1)复杂数据类型包括数组(ARRAY)、映射(MAP)和结构体(STRUCT),具体如下所示:
| 类型 | 描述 | 举例 |
|---|---|---|
| struct | 与 C/C++ 中的结构体类似,可通过“.”访问每个域的值,比如 struct{first String; last String},可通过 name.first 访问第一个成员。 | struct{‘John’, ‘Doe’} |
| map | 存储 key-value 对,可通过 [‘key’] 获取每个 key 的值,比如 ‘first’->‘John’ and ‘Doe’,可通过 name[‘last’] 获取 last name。 | map(‘first’, ‘John’, ‘last’, ‘Doe’) |
| array | 同种类型的数据集合,从 0 开始索引,比如 [‘John’, ‘Doe’],可通过 name[1] 获取值 “Doe”。 | array(“John”, “Doe”) |
(2)说明:
ARRAY:ARRAY 类型是由一系列相同数据类型的元素组成,这些元素可以通过下标来访问。比如有一个 ARRAY 类型的变量 fruits,它是由 [‘apple’,‘orange’,‘mango’] 组成,那么我们可以通过 fruits[1]来访问元素 orange,因为 ARRAY 类型的下标是从 0 开始的。
MAP:MAP 包含 key->value 键值对,可以通过 key 来访问元素。比如 ”userlist” 是一个 map 类型,其中 username 是 key,password 是 value;那 么 我 们 可 以 通 过 userlist[‘username’] 来得到这个用户对应的 password。
STRUCT:STRUCT 可以包含不同数据类型的元素。这些元素可以通过”点语法”的方式来得到所需要的元素,比如 user 是一个 STRUCT 类型,那么可以通过 user.address 得到这个用户的地址。
(3)示例:
CREATE TABLE student(
name STRING,
favors ARRAY<STRING>,
scores MAP<STRING, FLOAT>,
address STRUCT<province:STRING, city:STRING, detail:STRING, zip:
本文介绍了Hive中的数据类型,包括原子数据类型如DATE、BOOLEAN、STRING、TINYINT等,并详细讲解了复杂数据类型:ARRAY、MAP和STRUCT的使用,以及UNION TYPE的概念。通过示例演示了如何在Hive中创建和查询这些数据类型的表,展示了Hive如何通过一张表实现关系型数据库中的多表关系。
最低0.47元/天 解锁文章
761

被折叠的 条评论
为什么被折叠?



