Hive 高级操作(一)之数据类型(原子,array,map,struct,union)

本文介绍了Hive中的数据类型,包括原子数据类型如DATE、BOOLEAN、STRING、TINYINT等,并详细讲解了复杂数据类型:ARRAY、MAP和STRUCT的使用,以及UNION TYPE的概念。通过示例演示了如何在Hive中创建和查询这些数据类型的表,展示了Hive如何通过一张表实现关系型数据库中的多表关系。
摘要由CSDN通过智能技术生成

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:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值