hive 强转为string_Hive(二)【数据类型、类型转换】
一.基本數(shù)據(jù)類(lèi)型
HIVE
MySQL
JAVA
長(zhǎng)度
例子
TINYINT
TINYINT
byte
1byte有符號(hào)整數(shù)
2
SMALINT
SMALINT
short
2byte有符號(hào)整數(shù)
20
INT
INT
int
4byte有符號(hào)整數(shù)
20
BIGINT
BIGINT
long
8byte有符號(hào)整數(shù)
20
BOOLEAN
無(wú)
boolean
布爾類(lèi)型,true或者false
TRUE FALSE
FLOAT
FLOAT
float
單精度浮點(diǎn)數(shù)
3.14159
DOUBLE
DOUBLE
double
雙精度浮點(diǎn)數(shù)
3.14159
STRING
VARCHAR
string
字符系列。可以指定字符集。可以使用單引號(hào)或者雙引號(hào)。
‘now is the time’ “for all good men”
TIMESTAMP
TIMESTAMP
時(shí)間類(lèi)型
BINARY
BINARY
字節(jié)數(shù)組
對(duì)于Hive的String類(lèi)型相當(dāng)于數(shù)據(jù)庫(kù)的varchar類(lèi)型,該類(lèi)型是一個(gè)可變的字符串,不過(guò)它不能聲明其中最多能存儲(chǔ)多少個(gè)字符,理論上它可以存儲(chǔ)2GB的字符數(shù)。
案例實(shí)操
利用基本數(shù)據(jù)類(lèi)型建表測(cè)試
create table test(id int,weight double,name string,money bigint);
利用insert語(yǔ)句按照指定的數(shù)據(jù)類(lèi)型插入一條數(shù)據(jù)
insert into test values(1001,75,"zhangsan",1000000000000);
二.集合數(shù)據(jù)類(lèi)型
數(shù)據(jù)類(lèi)型
描述
語(yǔ)法示例
STRUCT
和c語(yǔ)言中的struct類(lèi)似,都可以通過(guò)“點(diǎn)”符號(hào)訪(fǎng)問(wèn)元素內(nèi)容。例如,如果某個(gè)列的數(shù)據(jù)類(lèi)型是STRUCT{first STRING, last STRING},那么第1個(gè)元素可以通過(guò)字段.first來(lái)引用。
struct() 例如 struct
MAP
MAP是一組鍵-值對(duì)元組集合,使用數(shù)組表示法可以訪(fǎng)問(wèn)數(shù)據(jù)。例如,如果某個(gè)列的數(shù)據(jù)類(lèi)型是MAP,其中鍵->值對(duì)是’first’->’John’和’last’->’Doe’,那么可以通過(guò)字段名[‘last’]獲取最后一個(gè)元素
map() 例如map
ARRAY
數(shù)組是一組具有相同類(lèi)型和名稱(chēng)的變量的集合。這些變量稱(chēng)為數(shù)組的元素,每個(gè)數(shù)組元素都有一個(gè)編號(hào),編號(hào)從零開(kāi)始。例如,數(shù)組值為[‘John’, ‘Doe’],那么第2個(gè)元素可以通過(guò)數(shù)組名[1]進(jìn)行引用。
Array() 例如array< string>
案例實(shí)操
測(cè)試數(shù)據(jù)
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
建Hive表
create table person(
name string,
friend array,
children map,
address struct
)
row format delimited fields terminated by ',' -- 列分隔符
collection items terminated by '_'--MAP STRUCT 和 ARRAY 的分隔符(數(shù)據(jù)分割符號(hào))
map keys terminated by ':'-- MAP中的key與value的分隔符
lines terminated by '\n';-- 行分隔符
加載數(shù)據(jù)
load data local inpath '/opt/module/hive/datas/person.txt' into table person;
查詢(xún)數(shù)據(jù)
select * from person;
需求:查出來(lái)songsong 這個(gè)人的姓名,第一個(gè)朋友,孩子xiaoxiao song的年齡,和他的郵編
ARRAY,MAP,STRUCT的訪(fǎng)問(wèn)方式
select name,friend[0],children['xiaoxiao song'],address.email
from person
where name = 'songsong';
三.類(lèi)型轉(zhuǎn)換
Hive的原子數(shù)據(jù)類(lèi)型是可以進(jìn)行隱式轉(zhuǎn)換的,類(lèi)似于Java的類(lèi)型轉(zhuǎn)換,例如某表達(dá)式使用INT類(lèi)型,TINYINT會(huì)自動(dòng)轉(zhuǎn)換為INT類(lèi)型,但是Hive不會(huì)進(jìn)行反向轉(zhuǎn)化,例如,某表達(dá)式使用TINYINT類(lèi)型,INT不會(huì)自動(dòng)轉(zhuǎn)換為T(mén)INYINT類(lèi)型,它會(huì)返回錯(cuò)誤,除非使用CAST操作。
1.隱式類(lèi)型轉(zhuǎn)換
(1)任何整數(shù)類(lèi)型都可以隱式地轉(zhuǎn)換為一個(gè)范圍更廣的類(lèi)型,如TINYINT可以轉(zhuǎn)換成INT,INT可以轉(zhuǎn)換BIGINT。
(2)所有整數(shù)類(lèi)型、FLOAT和STRING類(lèi)型都可以隱式地轉(zhuǎn)換成DOUBLE。
(3)TINYINT、SMALLINT、INT都可以轉(zhuǎn)換為FLOAT。
(4)BOOLEAN類(lèi)型不可以轉(zhuǎn)換為任何其它的類(lèi)型。
2.顯示(強(qiáng)制)類(lèi)型轉(zhuǎn)換
?CAST( vlaue AS type)
例如CAST('1' AS INT)將把字符串'1' 轉(zhuǎn)換成整數(shù)1;如果強(qiáng)制類(lèi)型轉(zhuǎn)換失敗,如執(zhí)行CAST('X' AS INT),表達(dá)式返回空值 NULL。
總結(jié)
以上是生活随笔為你收集整理的hive 强转为string_Hive(二)【数据类型、类型转换】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: pemicro识别不了驱动_usb驱动无
- 下一篇: 苹果电脑w7开不开机黑屏怎么办 苹果电脑