柚子快報(bào)邀請(qǐng)碼778899分享:hadoop 1.Hive基礎(chǔ)
柚子快報(bào)邀請(qǐng)碼778899分享:hadoop 1.Hive基礎(chǔ)
1.簡(jiǎn)介
作用:將結(jié)構(gòu)化數(shù)據(jù)映射為一張表,并提供類sql功能
本質(zhì):將HQL轉(zhuǎn)化成MapReduce程序
(1)Hive處理的數(shù)據(jù)存儲(chǔ)在HDFS ?
(2)Hive分析數(shù)據(jù)底層的實(shí)現(xiàn)是MapReduce ?
(3)執(zhí)行程序運(yùn)行在Yarn上
ps.??HDFS 不支持隨機(jī)寫,只支持追加寫,所以在 Hive 中不能 update 和delete,能 select 和 insert
與數(shù)據(jù)庫對(duì)比:
2.mysql
啟動(dòng)mysql
mysql -uroot -p123456
關(guān)閉mysql
mysql> exit;
3.啟動(dòng)hive?
ps.hive的底層是基于hadoop的,因此啟動(dòng)hive必須依賴hadoop集群?
3.2 1 直接啟動(dòng)hive
開啟集群
my_hadoop start
直接啟動(dòng)hive?
[atguigu@hadoop101 ~]$ hive
退出hive?
hive> exit;
關(guān)閉集群
my_hadoop stop
ps.開啟方式簡(jiǎn)單,但是查詢數(shù)據(jù)輸出不規(guī)整?
3.2.2 通過元數(shù)據(jù)或者jdbc的方式訪問hive
ps.開啟方式復(fù)雜,但是返回的數(shù)據(jù)很規(guī)整?
前期準(zhǔn)備:?jiǎn)?dòng)集群
my_hadoop start
通過自定義腳本啟動(dòng)元數(shù)據(jù)(對(duì)應(yīng)的metastore)與jdbc(對(duì)應(yīng)的是 hiveserver2)的 runar
hiveservices.sh start | stop | restart| status
通過beeline啟動(dòng)hive?
[atguigu@hadoop101 ~]$ beeline -u jdbc:hive2://hadoop101:10000 -n atguigu
關(guān)閉hive?
jdbc:hive2://hadoop101:10000> !quit
關(guān)閉集群
my_hadoop stop
kill 掉runjar
kill -9 XXX
kill -9 XXX
4.數(shù)據(jù)類型
4.1 基本數(shù)據(jù)類型?
HivemysqlJAVAlength示例TINYINTTINYINTbyte1byte有符號(hào)整數(shù)2SMALINTSMALINTshort2byte有符號(hào)整數(shù)20INTINTint4byte有符號(hào)整數(shù)20BIGINTBIGINTlong8byte有符號(hào)整數(shù)20BOOLEAN無boolean布爾類型,true或者falseTRUE FALSEFLOATFLOATfloat單精度浮點(diǎn)數(shù)3.14159DOUBLEDOUBLEdouble雙精度浮點(diǎn)數(shù)3.14159STRINGVARCHARstring字符系列??梢灾付ㄗ址?梢允褂脝我?hào)或者雙引號(hào)?!畁ow is the time’“TIMESTAMPTIMESTAMP時(shí)間類型'2013-01-31 00:13:00.345’BINARYBINARY字節(jié)數(shù)組1010
?ps.紅標(biāo)為常用的數(shù)據(jù)類型;
ps.對(duì)于Hive的String類型相當(dāng)于數(shù)據(jù)庫的varchar類型,該類型是一個(gè)可變的字符串.
4.2 集合數(shù)據(jù)類型
數(shù)據(jù)類型? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 示例描述STRUCT例如,如果某個(gè)列的數(shù)據(jù)類型是STRUCT{first STRING, last STRING},那么第1個(gè)元素可以通過字段.first來引用。例如:struct
例子:
1.hive下方有一個(gè)datas目錄,在其中vim test.txt:
songsong,bingbing_lili,xiao song:18_xiaoxiao song:19,hui long guan_beijing
yangyang,caicai_susu,xiao yang:18_xiaoxiao yang:19,chao yang_beijing
ps.每一行的數(shù)據(jù)都包含了四種類型,分別是string,array,map,struct
2. 在hive上創(chuàng)建表
create table test(
name string,
friends array
children map
address struct
)
3.數(shù)據(jù)分割(按照數(shù)據(jù)決定)
row format delimited fields terminated by ',' // 讓每個(gè)字段按逗號(hào)分開
collection items terminated by '_' // 集合(MAP STRUCT和ARRAY)的分隔符
map keys terminated by ':' // MAP中的key與value的分隔符
lines terminated by '\n'; // 行分隔符(可以判斷出是兩行)
4.導(dǎo)入文本數(shù)據(jù)到測(cè)試表
load data local inpath '/opt/module/hive/datas/test.txt' into table test;
?5.訪問數(shù)據(jù)
hive (default)> select name,friends[1],children['xiao song'],address.city
from test where name="songsong";
查詢結(jié)果:
? ? ? ? ? ? ? ? ? ? ? ??
4.3 類型轉(zhuǎn)換
1.規(guī)則:
(1)隱式轉(zhuǎn)換
? ?? 任何整數(shù)類型都可以隱式地轉(zhuǎn)換為一個(gè)范圍更廣的類型。
? ? ?如TINYINT可以轉(zhuǎn)換成INT,INT可以轉(zhuǎn)換成BIGINT。
? ? 所有整數(shù)類型、FLOAT和.STRING類型的數(shù)字.都可以隱式地轉(zhuǎn)換成DOUBLE。
? ??TINYINT、SMALLINT、INT都可以轉(zhuǎn)換為FLOAT。
? ? ?BOOLEAN類型不可以轉(zhuǎn)換為任何其它的類型。
(2)強(qiáng)制轉(zhuǎn)換
? ? ? ? ?使用CAST操作。例如CAST(‘1’ as int)將把字符串’1’ 轉(zhuǎn)換成整數(shù)1
2.示例
hive (default)> select '1' + 2, cast('1' as int) + 2;
_c0 _c1
3.0 3
柚子快報(bào)邀請(qǐng)碼778899分享:hadoop 1.Hive基礎(chǔ)
推薦文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。