hive 数据类型_sv数据类型

hive 数据类型_sv数据类型本篇来学习一下Hive中的数据类型,以及如何在HiveSQL中去处理这些数据类型。Hive的数据类型可以分为基本类型、字符串类型、日期与时间戳类型、集合类型,我们分别进行介绍:1、基…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

本篇来学习一下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来进行说明:

创建表:

create table if not exists
datatype_test1(id int,col1 decimal,col2 decimal(9,8)) 
row format delimited fields terminated by ',';

我们从txt中读取数据:

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中的数据:

 select * from datatype_test1;

结果如下:

hive 数据类型_sv数据类型

2、字符串类型

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

数据类型 长度 示例
STRING ‘abc’
VARCHAR 1-65535 ‘abc’
CHAR 1-255 ‘abc’

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

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

创建表:

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中读取数据:

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中的数据:

 select * from datatype_test2;

结果如下:

hive 数据类型_sv数据类型

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

select 
  *,
  char_col='paul ', 
  varchar_col='paul ',
  char_col='paul',
  varchar_col='paul'  
from 
  datatype_test2; 

结果如下:

hive 数据类型_sv数据类型

可以看到,对于尾部的空格,并不影响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

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

创建表:

 create table if not exists
datatype_test3(id int,date_col Date,timestamp_col timestamp) 
row format delimited fields terminated by ',';

我们从txt中读取数据:

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中的数据:

 select * from datatype_test3;

结果如下:

hive 数据类型_sv数据类型

4、集合类型

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

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

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

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

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

创建表:

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文件:

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中并查看:

load data local inpath '/Users/meituan_sxw/Downloads/test4.txt' into table datatype_test4;


select * from datatype_test4;

结果如下:

hive 数据类型_sv数据类型

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

select 
  info.name as name,
  info.weight as weight
from 
  datatype_test4;


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

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

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的内容:

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.net/191159.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 拓端tecdat|基于R语言实现LASSO回归分析「建议收藏」

    拓端tecdat|基于R语言实现LASSO回归分析「建议收藏」模拟假数据集set.seed(0820)n<-50p<-25beta<-rep(0,p)beta[1:5]<-1:5/5X<-matrix(rnorm(n*p),n,p)X<-scale(X)Xb<-X%*%betaY<-X%*%b…

    2022年6月3日
    37
  • SVN服务器安装 – Windows系统

    SVN服务器安装 – Windows系统Windows系统下SVN服务器搭建及遇到相关问题和处理方法记录

    2022年10月18日
    3
  • 离散对数和椭圆曲线加密原理[通俗易懂]

    离散对数和椭圆曲线加密原理[通俗易懂]序言现代公钥加密系统中,常用的加密算法除了RSA还有离散对数加密和椭圆曲线加密。这两者原理比较相似,在这里一并介绍。离散对数问题我们在中学里学的对数问题是指,给定正实数aaa和axaxa^x,求xxx。也就是计算x=logaaxx=loga⁡axx=\log_a{a^x}。这是实数域上的对数问题,不是什么难算的东西,随便按一下计算器结果就出来了。而离散对…

    2022年5月7日
    176
  • Windows下nmap命令及Zenmap工具的使用方法「建议收藏」

    Windows下nmap命令及Zenmap工具的使用方法「建议收藏」#Nmap简介nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。正如大多数被用于网络安全的工具,nmap也是不少黑客爱用的工具。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。Nmap常被跟评估系统漏洞软件Nessus混为一谈。Nmap

    2022年5月26日
    203
  • VLAN标签「建议收藏」

    VLAN标签「建议收藏」1.VLAN标签定义和作用要使交换机能够分辨不同的VLAN报文,需要在报文中添加标识VAN信息的字段。IEEE802.1Q协议规定在以太网数据帧的目的MAC地址和源MAC地址字段之后、协议类型字段之前加入4个字节的VLAN标签(又称VLANTag,简称Tag),用以标识VLAN信息,IEEE802.1Q封装的VLAN数据帧格式如图所示。2.常用设备收发数据帧的VLAN标签情况…

    2022年8月10日
    6
  • 服务器性能测试有哪些,什么是服务器Web性能测试?主要包含哪几个方面?

    服务器性能测试有哪些,什么是服务器Web性能测试?主要包含哪几个方面?原标题 什么是服务器 Web 性能测试 主要包含哪几个方面 什么是 Web 软件性能测试 跟性能测试有什么不同 Web 软件性能测试是一种收集信息和分析信息的过程 主要目的是用来检查程序是否具有良好的性能 为维护系统的性能找到有效的改善策略 性能测试主要是考察在不同的用户负载下 Web 应用对用户请求作出的响应情况 以确保将来系统运行的安全性 可靠性和执行效车 Web 性能测试能够基露出系统的性能瓶颈问题 并

    2025年10月17日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号