前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >hive 数据类型_sv数据类型

hive 数据类型_sv数据类型

作者头像
全栈程序员站长
发布于 2022-11-08 05:19:24
发布于 2022-11-08 05:19:24
1.3K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

本篇来学习一下Hive中的数据类型,以及如何在Hive SQL中去处理这些数据类型。

Hive的数据类型可以分为基本类型、字符串类型、日期与时间戳类型、集合类型,我们分别进行介绍:

1、 基本类型

Hive中的基本类型如下:

数据类型

大小

范围

示例

TINYINT

1byte

-128 ~ 127

100Y

SMALLINT

2byte

-32768 ~ 32767

100S

INT

4byte

-2^32~ 2^32-1

100

BIGINT

8byte

-2^64~ 2^64-1

100L

FLOAT

4byte

单精度浮点数

5.21

DOUBLE

8byte

双精度浮点数

5.21

DECIMAL

高精度浮点数

DECIMAL(9,8)

BOOLEAN

布尔型

true/false

BINARY

字节数组

这里我们对DECIMAL类型做两点说明: 1)DECIMAL(9,8)代表最多9位数字,后8位是小数。此时也就是说,小数点前最多有1位数字,如果超过一位则会变成null。 2)如果不指定参数,那么默认是DECIMAL(10,0),即没有小数位,此时0.82会变成1。

这里我们通过一个SQL来进行说明:

创建表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create table if not exists
datatype_test1(id int,col1 decimal,col2 decimal(9,8)) 
row format delimited fields terminated by ',';

我们从txt中读取数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
load data local inpath '/Users/meituan_sxw/Downloads/test1.txt' into table datatype_test1;


#txt中的内容
1,0.82,83.2
2,1.06,9.22

接下来查看hive中的数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 select * from datatype_test1;

结果如下:

2、字符串类型

Hive中的字符串类型包含如下三种:

数据类型

长度

示例

STRING

‘abc’

VARCHAR

1-65535

‘abc’

CHAR

1-255

‘abc’

对于VARCHAR创建时需指定长度,如果插入的字符串超过了指定的长度,则会被截断,尾部的空格也会作为字符串的一部分,影响字符串的比较。 对于CHAR类型来说,它是固定长度的,如果插入的字符串长度不如指定的长度,则会用空格补齐。但是尾部的空格不影响字符串的比较。

接下来通过例子进行说明:

创建表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create table if not exists
datatype_test2(id int,str_col string,varchar_col varchar(5),char_col char(5)) 
row format delimited fields terminated by ',';

我们从txt中读取数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
load data local inpath '/Users/meituan_sxw/Downloads/test2.txt' into table datatype_test2;


#txt中的内容
1,james harden,harden,harden
2,Westbrook,westbrook,westbrook
3,chris paul,paul,paul

接下来查看hive中的数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 select * from datatype_test2;

结果如下:

再来看一下对于不同类型的字符串比较的例子,这里只需要注意第三行即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select 
  *,
  char_col='paul ', 
  varchar_col='paul ',
  char_col='paul',
  varchar_col='paul'  
from 
  datatype_test2; 

结果如下:

可以看到,对于尾部的空格,并不影响char类型字符串的比较,但影响了varchar类型字符串的比较。

3、日期与时间戳类型

日期与时间戳类型主要有以下两种:

数据类型

格式

示例

DATE

yyyy-MM-dd

2020-07-04

TIMESTAMPS

yyyy-MM-dd HH:mm:ss.fffffffff

2020-07-04 12:36:25.111

接下来做两点说明: 1)DATE类型只支持yyyy-MM-dd格式的数据,其余格式都是错误的,会变为NULL 2)TIMESTAMPS表示UTC时间,格式为yyyy-MM-dd HH:mm:ss.fffffffff,即最多支持纳秒级,如果长度超出,则会变成NULL

接下来还是通过例子来说明:

创建表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 create table if not exists
datatype_test3(id int,date_col Date,timestamp_col timestamp) 
row format delimited fields terminated by ',';

我们从txt中读取数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
load data local inpath '/Users/meituan_sxw/Downloads/test3.txt' into table datatype_test3;


#txt中的内容
1,2020-07-04,2020-07-04 13:20:23.22
2,20200704,2020-07-04 13:20:23.222222222
3,2020-07-04,2020-07-04 13:20:23.22222222222

接下来查看hive中的数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 select * from datatype_test3;

结果如下:

4、集合类型

Hive中集合类型主要包含三种:STRUCT、ARRAY、MAP。咱们来分别介绍。

STRUCT STRUCT 即结构体,通过相关的不同类型的数据来描述一个数据对象

ARRAY ARRAY表示一组相同数据类型的集合,下标从零开始,可以用下标访问

MAP MAP是一组键值对的组合,可以通过KEY访问VALUE

通过例子来感受下上述三种类型的使用:

创建表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create table if not exists
datatype_test4(
  id int,
  info struct<name:string,weight:double>,
  score array<Int>,
  info_map map<string,string>) 
row format delimited fields terminated by ',' 
COLLECTION ITEMS TERMINATED BY ';' 
MAP KEYS TERMINATED BY ':';

可以看到,我们定义了三种不同的集合类型字段,并指定了集合类型的分隔符为”;”,即struct,array,以及map的不同kv之间用”;”分割,同时定义了map的key和value之间用”:”分割。

接下来,我们创建如下内容的txt文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1,文文;70,99;96;100,name:文文;country:china
2,毛毛;60,99;92;100,name:毛毛;country:koera
3,超超;65,99;96;100,name:超超;country:japan

倒入hive中并查看:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
load data local inpath '/Users/meituan_sxw/Downloads/test4.txt' into table datatype_test4;


select * from datatype_test4;

结果如下:

接下来,进一步介绍不同类型的读取,首先是struct类型,可以通过”.”来访问不同的内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select 
  info.name as name,
  info.weight as weight
from 
  datatype_test4;


#输出
文文  70.0
毛毛  60.0
超超  65.0

对于Array类型,可以通过下标进行访问,下标从0开始:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select 
  info.name as name,
  score[0] as math,
  score[1] as chinese,
  score[2] as English 
from 
  datatype_test4;


# 输出
文文  99  96  100
毛毛  99  92  100
超超  99  96  100

对于Map类型,可以通过[‘key’]来访问不同key的内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select 
  info_map['name'] as name,
  info_map['country'] as country
from 
  datatype_test4;


#输出
文文  china
毛毛  koera
超超  Japan

集合类型还包括UNIONTYPE,这里不做介绍,感兴趣的同学可自行查阅相关资料。

参考文献

1、https://www.jianshu.com/p/1c9263cc2f9a 2、https://segmentfault.com/a/1190000016125717?utm_source=tag-newest

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/191159.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月21日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Hive 复杂数据类型
TINYINT,SMALLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBLE,STRING,BINARY,TIMESTAMP,DECIMAL,CHAR,VARCHAR,DATE。
大数据老哥
2021/02/04
1.1K0
Hive 复杂数据类型
五、Hive数据类型和简单使用
Hive使用的语句是Hql,和sql百分之九十都是相近的,因此,只要对SQL比较熟悉的,Hql基本不用怎么学。
润森
2022/08/18
4330
五、Hive数据类型和简单使用
Hive中的数据类型以及案例实操
对于Hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储2GB的字符数。
孙晨c
2020/10/10
1K0
Hive中的数据类型以及案例实操
Hive加载数据、使用复合数据类型
从本地文件系统加载数据一般使用/开头的绝对路径,快速得到某个文件的绝对路径可以使用readlink -f或者locate命令
esse LL
2024/03/24
3240
MySQL(1)——数据类型的选择(一)
④. 结论:char 类型存储字符会剔除末尾的空格,而 varchar 存储会保留所有字符。
凡人飞
2020/09/18
1.2K0
一文学完所有的Hive Sql(两万字最全详解)
lateral view用于和split、explode等UDTF一起使用的,能将一行数据拆分成多行数据,在此基础上可以对拆分的数据进行聚合,lateral view首先为原始表的每行调用UDTF,UDTF会把一行拆分成一行或者多行,lateral view在把结果组合,产生一个支持别名表的虚拟表。
五分钟学大数据
2021/04/02
3.2K0
Hive中的复合数据类型
在正式开始之前,先让我们来看下Hive中所有的数据类型吧!
大数据梦想家
2021/01/26
7110
Hive操作表部分总结
create table tableName(time INT,userid BIGINT,url STRING,ip STRING COMMENT 'IP Address of the User') COMMENT 'This is the tableName table' PARTITIONED BY (dt STRING,country String)  CLUSTERED BY(userid) SORTED BY(time) INTO 32 BUCKETS ROW FORMAT DELIMITED FIELDS TERMINATED BY '001'  MAP KEYS TERMINATED BY '\003' STORED as SEQUENCEFILE;
用户3003813
2018/09/06
6010
Hive 基本操作(创建数据库与创建数据库表)
修改数据库 可以使用alter database 命令来修改数据库的一些属性。但是数据库的元数据信息是不可更改的,包括数据库的名称以及数据库所在的位置
Maynor
2021/04/09
5.4K0
五万字 | Hive知识体系保姆级教程
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
数据社
2021/08/27
2.2K0
五万字 | Hive知识体系保姆级教程
2021年大数据Hive(三):手把手教你如何吃透Hive数据库和表操作(学会秒变数仓大佬)
1、CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXISTS 选项来忽略这个异常。
Lansonli
2021/10/11
1.9K0
hive数据类型及转换「建议收藏」
对于 Hive 的 String 类型相当于数据库的 varchar 类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储 2GB 的字符数。
全栈程序员站长
2022/11/08
2K0
hive数据类型及转换「建议收藏」
hive学习笔记之二:复杂数据类型
执行结果如下,第一条记录friends数组中有tom_friend_0,显示为true,第二条记录不包含,就显示false:
程序员欣宸
2021/06/28
5050
Hive的数据类型
本文介绍hive的数据类型,数据模型以及文件存储格式。这些知识大家可以类比关系数据库的相关知识。
加米谷大数据
2018/07/25
2.4K0
Hive的数据类型
快速学习-Hive 数据类型
对于 Hive 的 String 类型相当于数据库的 varchar 类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储 2GB 的字符数。
cwl_java
2020/02/21
7930
快速学习-Hive 数据类型
关于Hive使用的一些实例
它是一个特殊形式的 CONCAT()。第一个参数剩余参数间的分隔符。分隔符可以是与剩余参数一样的字符串。如果分隔符是 NULL,返回值也将为 NULL。这个函数会跳过分隔符参数后的任何 NULL 和空字符串。分隔符将被加到被连接的字符串之间。
泰坦HW
2020/08/22
1.6K0
HiveQL快速使用
--define可以定义用户变量 --hivevar可以定义用户遍历 --hiveconf使用key-value得到hive-site.xml配值的变量
Tim在路上
2020/08/04
7800
Hive-1.2.1_03_DDL操作 1.1. Create Database1.2. Drop Database1.3. Use Database2.1. Cre
  注意:各个语句的版本时间,有的是在 hive-1.2.1 之后才有的,这些语句我们在hive-1.2.1中是不能使用的。
踏歌行
2020/10/15
7710
Hive-1.2.1_03_DDL操作
    




        1.1. Create Database1.2. Drop Database1.3. Use Database2.1. Cre
Hive基础操作
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。
CBeann
2023/12/25
5390
Hive 基础操作
hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive十分适合对数据仓库进行统计分析。
Golvi
2023/11/20
3720
Hive 基础操作
相关推荐
Hive 复杂数据类型
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验