大数据—Hive(三)_ 数据类型

1、基本数据类型

HIVEMySQLJAVA长度例子
TINYINTTINYINTbyte1byte有符号整数2
SMALINTSMALINTshort2byte有符号整数20
INTINTint4byte有符号整数20
BIGINTBIGINTlong8byte有符号整数20
BOOLEANboolean布尔类型,true或者falseTRUE FALSE
FLOATFLOATfloat单精度浮点数3.14159
DOUBLEDOUBLEdouble双精度浮点数3.14159
STRINGVARCHARstring字符系列,可以指定字符集,可以使用单引号或者双引号。‘now is the time’ “for all good men”
TIMESTAMPTIMESTAMP时间类型
BINARYBINARY字节数组

注意:mysql没有布尔数据类型
mysql:

select 1=1
1
select 1=3
0

hive:

select 1=1
true
select 1=3
false

2、集合数据类型

数据类型描述语法示例
STRUCT和c语言中的struct类似,都可以通过“点”符号访问元素内容。例如,如果某个列的数据类型是STRUCT{first STRING, last STRING},那么第1个元素可以通过字段.first来引用。struct() 例如struct<street:string, city:string>
MAPMAP是一组键-值对元组集合,使用数组表示法可以访问数据。例如,如果某个列的数据类型是MAP,其中键->值对是’first’->’John’和’last’->’Doe’,那么可以通过字段名[‘last’]获取最后一个元素map()例如map<string, int>
ARRAY数组是一组具有相同类型和名称的变量的集合。这些变量称为数组的元素,每个数组元素都有一个编号,编号从零开始。例如,数组值为[‘John’, ‘Doe’],那么第2个元素可以通过数组名[1]进行引用。Array()例如array

Array
类似java中的数组

Map
类似java中的键值对

Struct
类似java中的javabean

案例

a、建立一张testCollect表

create table testCollect(
name string,
friends array<string>,
children map<string, int>,
address struct<street:string,city:string,email:int>
)
row format delimited 
fields terminated by ','              -- 导入的文本,按照“,”区分各个字段
collection items terminated by '_'    -- 对于(ARRAY、MAP、STRUCT)单个字段,使用“_”区分各个元素
map keys terminated by ':'            -- 对于MAP中单个字段中的单个元素,使用“:”区分key和value
lines terminated by '\n'              -- 行分隔符
;

b、导入数据

[atguigu@hadoop102 module]$ vim testCollect.txt
songsong,bingbing_lili,xiao song:18_xiaoxiao song:19,hui long guan_beijing_10010
yangyang,caicai_susu,xiao yang:18_xiaoxiao yang:19,chao yang_beijing_10011
[atguigu@hadoop102 module]$ hive -e "load data local inpath '/opt/module/hadoop-3.1.3/testCollect.txt' into table db_hive1.testCollect;"

在这里插入图片描述

结果
访问数据中的元素

select name
      ,friends[1]
      ,children['xiao song']
      ,address.city 
from   testCollect
where  name="songsong";

在这里插入图片描述

3、类型转化

3.1 隐式转化

  1. 自动类型转化 tinyint 可以转为 int ,int 可以转为 bigint
  2. 整数类型、float 和 String类型(如:String : “1.1”) 可以转为double
  3. tinyint、smallint、int都可以转换为 float
  4. Boolean类型不可以转换为任何其它的类型

3.2 强制转化

  1. CAST(‘1’ AS INT)
  2. 注意单词的拼写,不和CASE混淆
  3. 如果转化失败,则会返回NULL,例如:CAST(‘1’ AS INT),不会报错
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据之负

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值