水善利万物而不争,处众人之所恶,故几于道💦
一、简单数据类型(复习)
官方数据类型详情页
数据类型 | 描述 | 范围 |
---|---|---|
tinyint | 1byte有符号整数 | from -128 to 127 |
smallint | 2byte有符号整数 | from -32,768 to 32,767 |
int | 4byte有符号整数 | from -2,147,483,648 to 2,147,483,647 |
bigint | 8byte有符号整数 | from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 |
float | 4byte单精度浮点数 | \ |
double | 8byte双精度浮点数 | \ |
decimal | 高精度数值类型 | decimal(10,0)默认值,表示最多有10位数,其中0位小数 |
boolean | 布尔类型 | true或者false |
string | 字符串 | 用的最多 |
date | 日期类型 | YYYY-MM-DD |
timestamp | 时间戳类型 | \ |
二、复杂数据类型
array(数组)
定义数组:array<int>
构建数组:array(1,3,5,6)
访问数组:字段名[0]
map(集合)
定义集合:map<string,int>
构建集合:map(“age”,11,“weight”,99)
访问集合:字段名[“weight”]
struct(结构体)
定义结构体:struct<name:string,age:int>
构建结构体:named_struct(“name”,“Asrid”,“age”,99)
访问结构体:字段名.name
看完上面可能一脸懵,有点懂,又有点迷,下面用一个例子解释下。
数据类型无非就是创建表的时候指定数据类型,然后向表中插入数据的时候要按照相应的数据类型构建出相应格式类型的数据才能插入,最终在查询的时候如何访问到数据。
上面说的分别就对应数据类型的定义、构建、访问。
比如,想创建一张data_type表,字段的数据类型分别用array、map、struct,那如何写呢?
create table data_type(
name string,
age int,
address map<string,string>,
friend struct<name:string,age:int>,
phone array<bigint>
)
表中最后三个字段的类型就是复杂数据类型的定义,也就是如何声明一个复杂的数据类型。
表创建好了以后,如何向表中插入数据呢?这就涉及到如何构建一个map、array、struct 了
insert into table data_type
(name,age,address,friend,phone) values
("Bersd",
32,
map("山西","太原","陕西","西安"),
named_struct("name","aaa","age",33),
array(12345678888,18234567777,19243219998))
构建map的时候,直接map()括号里面写上key value 中间用逗号分割开就行
构建struct的时候,使用named_struct()括号里面写属性名,属性值,之间用逗号隔开
构建array的时候,直接array()括号里面写上数组内元素就行了,各个元素之间用逗号隔开
向表中插入数据之后,那怎样访问到struct、map、array 里面的数据呢?
select name,
address["山西"] shanxi,
friend.name friend_name,
friend.age friend_age,
phone[0] phone_first
from data_type;
可以看到,访问array和map的时候都是方括号,然后里面写数组下标或者map的key,而访问struct的数据时要.属性名
这样子访问
扩展:以上复杂数据类型之间支持嵌套,也就是说struct里面的数据类型可以写map、array,array里面也可以放map、struct…
构建struct还可以直接struct(“name”,“张三”,“age”,89)这样他就会给四个默认的列名,这个一般不用文章来源:https://www.toymoban.com/news/detail-838909.html
文章来源地址https://www.toymoban.com/news/detail-838909.html
到了这里,关于Hive中的复杂数据类型 - array、map、struct的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!