Hive中数据类型和隐式转换

基本数据类型(能记住几个常用的就行)

HIVE数据类型Java数据类型
TINYINTbyte
SMALINTshort
INTint
BIGINTlong
BOOLEANboolean
FLOATfloat
DOUBLEdouble
STRINGstring
TIMESTAMP“”时间类型“”
BINARY“字节数组”

集合数据类型(很重要,牢记哦)

数据类型描述
STRUCTstruct() ==>相当于c语言中的struct,结构struct
ARRAYarray() ==>相当于java中的array,列表array
MAPmap() ==>相当于java中的map,键值map
  1. 上面这三个是hive提供的三种复杂的集合数据类型,可以无限嵌套,
    具体用法如下:
//这是一个JSON风格的例子
{
	“name”:“喜羊羊”             
	“friend”:["美羊羊","沸羊羊"]       //列表array
	"teacher":{							//键值map
			"慢羊羊”:50,
			"小蜗":8
	}
	"address":{							//结构struct
			"address":"羊羊大街128号"
			“city”:"青青草原"
	}
}

// 下面创建一个用于测试的txt文件
喜羊羊,沸羊羊_美羊羊,慢羊羊:512_小蜗:32,羊羊大街128号_青青草原
陈平安,刘羡阳_阮秀,齐静春:256_阿良:64泥瓶巷_龙泉镇

// 下面展示hive中的建表语言`。

create table  test(
	name string,
	friends array<string>,
	teacher map<string,int>,
	address struct<stresst:string,city:string>
	)
	row fromat delimated fields terminated by ','
	collection items terminated by '_'
	map keys terminated by':'
	lines terminated by '\b';

// 然后把txt文件写入表中就行了,本地或者hdfs上都可以(local)

load data inpath'/demo.txt' into table test;

类型转换

hive的类型转换是隐式转换,类似于java的类型转换,也就是说范围小的可以转大的,大的转小的就要强转。

  • 隐式转换规则如下
    1.任何整数类型都可以隐式的转换为大范围的,如INT转换为BIGINT,TINYINT换换为INT。
    2.所有整数类型、FLOAT、STRING都可以转换为双精度DOUBLE。
    3.TINYINT、SMALLINT、INT都可以转换为FLOAT。
    4.BOOLEAN类型不可以转换为任何其它的类型。

  • 可以使用CAST操作显示进行数据类型转换,例如CAST(‘1’ AS INT)将把字符串’1’ 转换成整数1;如果强制类型转换失败,如执行CAST(‘X’ AS INT),表达式返回空值 NULL。


版权声明:本文为cuierdan1202原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。