日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

hive 强转为string_Hive(二)【数据类型、类型转换】

發(fā)布時(shí)間:2025/4/5 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hive 强转为string_Hive(二)【数据类型、类型转换】 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一.基本數(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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。