Hive教程 | 從0到1

站內(nèi)有朋友私信數(shù)據(jù)產(chǎn)品經(jīng)理都需要掌握哪些技能和工具铸史,我給他們的回答:1.數(shù)據(jù)提取得會(huì):hive 2.數(shù)據(jù)清洗和整理:hive+Excel+Python 3.數(shù)據(jù)統(tǒng)計(jì)分析:Excel+SPSS+Python 4.數(shù)據(jù)展示:Excel+PPT+tableau

本文開啟hive的基礎(chǔ)教程和進(jìn)階(長(zhǎng)更偷仿,有需要的朋友收藏便于閱讀)

2018.10.06 建表

第一章 表基礎(chǔ)操作(DDL操作+DML元數(shù)據(jù)存儲(chǔ))

1.1創(chuàng)建分區(qū)表 注意:set語(yǔ)句中不能有注釋

set hive.exec.dynamic.partition.mode=nonstrict; --動(dòng)態(tài)分區(qū)

set hive.exec.dynamic.partition=true;? --動(dòng)態(tài)分區(qū)(partition的字段是動(dòng)態(tài)查詢寫入的)

set hive.exec.max.dynamic.partitions=100000; --總共的最大的動(dòng)態(tài)分區(qū)數(shù)

set hive.exec.max.dynamic.partitions.pernode=100000;--每個(gè)節(jié)點(diǎn)上能夠生成的最大分區(qū)枉昏,這個(gè)在最壞情況下應(yīng)該是跟最大分區(qū)一樣的值

set hive.exec.max.created.files=500000;? --是能夠創(chuàng)建的最多文件數(shù)(分區(qū)一多,文件必然就多了...)

CREATE EXTERNAL TABLE IF NOT EXISTS data_zhp( --如果相同名字的表已經(jīng)存在庆亡,則拋出異常今瀑;用戶可以用 IF NOT EXIST 選項(xiàng)來(lái)忽略這個(gè)異常

ROWKEY STRING,

STATION INT,

MONTH INT,

DAY INT

HOUR INT ,

MINUTE INT,

)

COMMENT 'ECLP開放預(yù)測(cè)'

PARTITIONED BY (YEAR INT)

ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' --聲明文件分隔符

LINES TERMINATED BY '\n' --聲明各條記錄分隔符

STORED AS TEXTFILE;

--Hive數(shù)據(jù)文件的存儲(chǔ)格式欢唾,這里使用的是TEXTFILE搏予,還有SEQUENCEFILE和RCFile熊锭,一共三種。

--TEXTFILE是最普通的文件存儲(chǔ)格式雪侥,內(nèi)容是可以直接查看碗殷。

--SEQUCENFILE是包含鍵值對(duì)的二進(jìn)制的文件存儲(chǔ)格式,支持壓縮速缨,可以節(jié)省存儲(chǔ)空間锌妻。是hadoop領(lǐng)域的標(biāo)準(zhǔn)文件格式,但是在hadoop之外卻無(wú)法使用旬牲。

--RCFile是列式存儲(chǔ)文件格式仿粹,適合壓縮處理搁吓。對(duì)于有成百上千字段的表而言,RCFile更加合適吭历。

 1.2復(fù)制空表與復(fù)制表及數(shù)據(jù)

CREATE TABLE sku_id_copy?LIKE sku_id;

CREATE TABLE sku_id_copy?as

select

*

from sku_id;

2018.10.14 表基礎(chǔ)操作增刪改

1.3表的增刪改

增加一列

ALTER TABLE dev_linshibiao? ADD???COLUMNS (new_col string)

刪除dept_id_1\ model列

ALTER TABLE dev_linshibiao? REPLACE COLUMNS (op_time string, dept_name_1string, cw_gmv double)

增加分區(qū)

ALTER TABLE dev_linshibiao? ADD???PARTITION (dt=‘2016-06-20’)

刪除分區(qū)

ALTER TABLE dev_linshibiao? DROP PARTITION (dt=‘2016-06-20’)

刪除表

DROP TABLE dev_linshibiao

創(chuàng)建/刪除視圖

CREATE VIEW [IF NOT EXISTS] view_name [ (column_name [COMMENT column_comment], ...) ][COMMENT view_comment][TBLPROPERTIES (property_name = property_value, ...)]?AS SELECT *

如果沒(méi)有提供表名堕仔,視圖列的名字將由定義的SELECT表達(dá)式自動(dòng)生成;如果修改基本表的屬性晌区,視圖中不會(huì)體現(xiàn)摩骨,無(wú)效查詢將會(huì)失敗朗若;視圖是只讀的恼五,不能用LOAD/INSERT/ALTER

DROP VIEW view_name??刪除視圖

2018.11.14 表的數(shù)據(jù)插入

1.4表的插入數(shù)據(jù)

分區(qū)表用overwrite:插入前清空分區(qū)

insert overwrite TABLE dev.search_batch_pvuv_zwh partition (dt)

? ? SELECT??*?? ?FROM XXXXX

不分區(qū)的表必須用insert??into

insert??into不清空插入,overwrite插入前清空哭懈,表中最后只剩新插入的數(shù)據(jù)

1.5表加載數(shù)據(jù)

LOAD DATA LOCAL INPATH './files/XXX.txt' OVERWRITE INTO TABLE XXXX;

--------------我是可愛的分割線灾馒,下期預(yù)告:查表----------------

沒(méi)有比人更高的山,比腳更長(zhǎng)的路~

第二章 表查詢操作(DQL數(shù)據(jù)查詢腳本)

2018.11.28?基本的Select語(yǔ)法

2.1基礎(chǔ)查詢

SELECT [ALL | DISTINCT] column1, column2, ...

FROM table_XXXX

[WHERE where_aaaa=XXX]

[GROUP BY column1 [HAVING condition]]

[CLUSTER BY column1| [DISTRIBUTE BY column1] [SORT BY | ORDER BY column1]]

[LIMIT number]

1.使用ALL和DISTINCT選項(xiàng)區(qū)分對(duì)重復(fù)記錄的處理银伟,默認(rèn)是ALL,表示查詢所有記錄绘搞;DISTINCT表示去掉重復(fù)的記錄

2.Where 條件彤避,支持 AND,OR 夯辖,between琉预,IN, NOT IN,不支持EXIST 蒿褂,NOT EXIST

3.ORDER BY與SORT BY的不同圆米,ORDER BY 全局排序,只有一個(gè)Reduce任務(wù)啄栓;SORT BY 只在本機(jī)做排序娄帖,前者保證在全局進(jìn)行排序,而后者僅保證在每個(gè)reduce內(nèi)排序昙楚,如果有超過(guò)1個(gè)reduce近速,sort by可能有部分結(jié)果有序

CLUSTER BY?和DISTRIBUTE BY主要用在進(jìn)行Transform/Map-Reduce腳本。

4.Limit 可以限制查詢的記錄數(shù)堪旧,實(shí)現(xiàn)Top n查詢削葱,一般order by 必須攜帶limit使用

2.2hive的分區(qū)查詢

hive表的一個(gè)優(yōu)勢(shì)便是分區(qū),通過(guò)分區(qū)可以避免掃全表數(shù)據(jù)淳梦,從而提高數(shù)據(jù)查詢速度析砸,分區(qū)限制在where語(yǔ)句中使用

--------------我是可愛的分割線,下期預(yù)告:表關(guān)聯(lián)----------------

人的一生爆袍,總是為了追尋生命中的光首繁,而走在漫長(zhǎng)的旅途中~

第三章 表關(guān)聯(lián)查詢

在表設(shè)計(jì)的過(guò)程作郭,考慮表的冗余程度、速度等原因蛮瞄,更多的是面向?qū)ο蠡蛘呙嫦蛑黝}設(shè)計(jì)所坯,所以需要全面的數(shù)據(jù)支持,便需要多表關(guān)聯(lián)查詢完成挂捅。

表的關(guān)聯(lián)的兩個(gè)手段為JOIN和UNION ALL

3.1 join

常用的join芹助,left outer join ,right outer join 闲先, full join 状土,left semi join

3.1.1 join

Select? a.*? from? tableA? a? join? tableB b? on a.id=b.id

必須等值鏈接,結(jié)果展示a伺糠、b表中共有的id部分

3.1.2?left outer join 蒙谓,right outer join?

Select? a.*? from? tableA? a? left outer join? tableB b? on??a.id=b.id

left outer join


right outer join?

3.1.3 full join

Select? a.*? from? tableA? a? full join? tableB b? on?a.id=b.id

full join?

3.1.4?left semi join

Select? a.*? from? tableA? a? left semi join? tableB b? on?a.id=b.id

等同于join,但是結(jié)果只顯示a表中字段

join的注意事項(xiàng):

1.實(shí)踐中训桶,應(yīng)該把數(shù)據(jù)量最大的那個(gè)表寫在最后關(guān)聯(lián)累驮;

2.限制 join 的輸出,應(yīng)該在 join前WHERE 子句中寫過(guò)濾條件舵揭,或是在 join 后子句中寫

3.可以 join 多于 2 個(gè)表

4.join容易將數(shù)據(jù)重復(fù)記錄谤专,導(dǎo)致計(jì)算最后結(jié)果錯(cuò)誤

3.2?UNION ALL

相同字段的表直接2表合并

SELECT column_name(s)

FROM table_name1 UNION ALL SELECT column_name(s) FROM table_name2

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市午绳,隨后出現(xiàn)的幾起案子置侍,更是在濱河造成了極大的恐慌,老刑警劉巖拦焚,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蜡坊,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡赎败,警方通過(guò)查閱死者的電腦和手機(jī)秕衙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)僵刮,“玉大人灾梦,你說(shuō)我怎么就攤上這事〖梭希” “怎么了若河?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)寞宫。 經(jīng)常有香客問(wèn)我萧福,道長(zhǎng),這世上最難降的妖魔是什么辈赋? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任鲫忍,我火速辦了婚禮膏燕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘悟民。我一直安慰自己坝辫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布射亏。 她就那樣靜靜地躺著近忙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪智润。 梳的紋絲不亂的頭發(fā)上及舍,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音窟绷,去河邊找鬼锯玛。 笑死,一個(gè)胖子當(dāng)著我的面吹牛兼蜈,可吹牛的內(nèi)容都是我干的攘残。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼为狸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼歼郭!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起钥平,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤实撒,失蹤者是張志新(化名)和其女友劉穎姊途,沒(méi)想到半個(gè)月后涉瘾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捷兰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年立叛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贡茅。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡秘蛇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出顶考,到底是詐尸還是另有隱情赁还,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布驹沿,位于F島的核電站艘策,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏渊季。R本人自食惡果不足惜朋蔫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一罚渐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧驯妄,春花似錦荷并、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至赎懦,卻和暖如春雀鹃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背励两。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工黎茎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人当悔。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓傅瞻,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親盲憎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嗅骄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容