哈嘍,大家好陈哑,我是漢斯老師妻坝。近幾年來伸眶,互聯(lián)網(wǎng)行業(yè)由于較高的薪資收入,受到許多人的追捧刽宪。很多年輕的學(xué)子厘贼,或是其他行業(yè)的有志青年,都想要投身到這個(gè)行業(yè)中來圣拄。然而一方面受到“互聯(lián)網(wǎng)寒冬”的影響嘴秸,最近頻頻傳出各家知名互聯(lián)網(wǎng)公司裁員縮編的消息;另一方面庇谆,大量的人才涌入岳掐,又使得互聯(lián)網(wǎng)產(chǎn)業(yè)在職場(chǎng)上呈現(xiàn)出供過于求的特征,并最終導(dǎo)致了職場(chǎng)上的激烈競(jìng)爭(zhēng)族铆。那么互聯(lián)網(wǎng)行業(yè)未來的潛力在哪里岩四?我們又應(yīng)該在哪個(gè)方向上發(fā)力,才能保證自己可以獲得一份高薪而穩(wěn)定的工作哥攘?基于多年的互聯(lián)網(wǎng)行業(yè)從業(yè)經(jīng)驗(yàn)剖煌,漢斯老師在這里向大家推薦大數(shù)據(jù)方向,希望通過本人的《三分鐘入門大數(shù)據(jù)》和《十分鐘精通大數(shù)據(jù)》等系列文章逝淹,幫助所有有志了解學(xué)習(xí)大數(shù)據(jù)的朋友掌握大數(shù)據(jù)的相關(guān)知識(shí)耕姊,也歡迎所有對(duì)互聯(lián)網(wǎng)行業(yè)以及大數(shù)據(jù)領(lǐng)域感興趣的朋友前來交流。
目錄
簡(jiǎn)介
hive的數(shù)據(jù)類型
hive的數(shù)據(jù)存儲(chǔ)
hive的數(shù)據(jù)模型
hive的DDL(數(shù)據(jù)庫(kù)定義語言)
hive的DML操作
hive加載數(shù)據(jù)
hive導(dǎo)出數(shù)據(jù)
hive udf使用介紹
簡(jiǎn)介
hive在hadoop生態(tài)圈屬于數(shù)據(jù)倉(cāng)庫(kù)角色栅葡,他能夠管理hadoop中的數(shù)據(jù)茉兰,同時(shí)可以查詢hadoop中的數(shù)據(jù)。本質(zhì)上來講欣簇,hive就是sql解釋器规脸,可以將sql轉(zhuǎn)換為mapreduce的job來運(yùn)行⌒苎剩可以將sql中的表莫鸭,字段轉(zhuǎn)化為hdfs中的文件,以及文件中的列横殴。hive在hdfs中的默認(rèn)位置是/user/hive/warehouse被因。
Hive的數(shù)據(jù)類型
整型:TINYINT,SMALLINT衫仑,INT梨与,BIGINT。
文本類型:VARCHAR:1 to 65355文狱,CHAR:255粥鞋,STRING
時(shí)間類型:timestamp:時(shí)間戳, date:日期
布爾及二進(jìn)制:BOOLEAN表示二元的true或false瞄崇,BINARY用于存儲(chǔ)變長(zhǎng)的二進(jìn)制數(shù)據(jù)
浮點(diǎn)類型:float陷虎,double
復(fù)雜數(shù)據(jù)類型:Array/Map/Struct/UNIONhive的數(shù)據(jù)存儲(chǔ)
Hive的數(shù)據(jù)存儲(chǔ)
1.基于Hadoop HDFS
2.Hive沒有專門的數(shù)據(jù)存儲(chǔ)格式到踏,存儲(chǔ)結(jié)構(gòu)主要包括:數(shù)據(jù)庫(kù)、文件尚猿、表、視圖
3.Hive默認(rèn)可以直接加載文本文件(TextFile)楣富,還支持sequence file 創(chuàng)建表時(shí)凿掂,指定
4.Hive數(shù)據(jù)的列分隔符與行分隔符,Hive即可解析數(shù)據(jù)
hive的數(shù)據(jù)模型
1.內(nèi)部表:與數(shù)據(jù)庫(kù)中的 Table 在概念上是類似每一個(gè)Table在Hive中都有一個(gè)相應(yīng)的目錄存儲(chǔ)數(shù)據(jù)纹蝴。例如庄萎,一個(gè)表test,它在HDFS中的路徑為:/user/hive/warehouse,刪除表時(shí)塘安,元數(shù)據(jù)與數(shù)據(jù)都會(huì)被刪除.
2.分區(qū)表:在 Hive 中糠涛,表中的一個(gè) Partition 對(duì)應(yīng)于表下的一個(gè)目錄,所有的 Partition的數(shù)據(jù)都存儲(chǔ)在對(duì)應(yīng)的目錄中兼犯。test表中包含 date 和 city 兩個(gè) Partition,則對(duì)應(yīng)于date=20130201, city = bj 的HDFS子目錄為:/user/hive/warehouse/test/date=20130201/city=bj
3.外部表:指向已經(jīng)在 HDFS 中存在的數(shù)據(jù)忍捡,可以創(chuàng)建 Partition 它和 內(nèi)部表在元數(shù)據(jù)的組織上是相同的,而實(shí)際數(shù)據(jù)的存儲(chǔ)則有較大的差異 內(nèi)部表 的創(chuàng)建過程和數(shù)據(jù)加載過程(這兩個(gè)過程可以在同一個(gè)語句中完成)切黔,在加載數(shù)據(jù)的過程中砸脊,實(shí)際數(shù)據(jù)會(huì)被移動(dòng)到數(shù)據(jù)倉(cāng)庫(kù)目錄中。外部表只有一個(gè)過程纬霞,加載數(shù)據(jù)和創(chuàng)建表同時(shí)完成凌埂,并不會(huì)移動(dòng)到數(shù)據(jù)倉(cāng)庫(kù)目錄中,只是與外部數(shù)據(jù)建立一個(gè)鏈接。當(dāng)刪除一個(gè)外部表時(shí)诗芜,僅刪除鏈接瞳抓。
hive的DDL(數(shù)據(jù)庫(kù)定義語言)
1.創(chuàng)建數(shù)據(jù)庫(kù)
hive> show databases;
OK default Time taken: 0.049 seconds, Fetched: 1 row(s)
hive> create database test;
OKTime taken: 0.201 seconds
hive> show databases;
OK default test Time taken: 0.021 seconds, Fetched: 2 row(s)
hive> use test;
OK Time taken: 0.02 seconds
hive> show tables;
OK Time taken: 0.014 seconds
或者:
hive> create database hive_test location '/hive/hive_test';
OK Time taken: 0.017 seconds
2.創(chuàng)建表
hive> CREATE TABLE IF NOT EXISTS employee ( eid int, name String,
? ? > salary String, destination String)
? ? > COMMENT 'Employee details'> ROW FORMAT DELIMITED
? ? > FIELDS TERMINATED BY '\t'> LINES TERMINATED BY '\n'
? ? > STORED AS TEXTFILE;
OK Time taken: 0.052 seconds
3.修改表:alter語句
ALTER TABLE name RENAME TO new_name
ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])
ALTER TABLE name DROP [COLUMN] column_name
ALTER TABLE name CHANGE column_name new_name new_type
ALTER TABLE name REPLACE COLUMNS (col_spec[, col_spec ...])
3.1.更改表名rename to,把 employee 修改為 emp。
hive> ALTER TABLE employee RENAME TO emp;
OK Time taken: 0.107 seconds
hive> show tables;
OK emp Time taken: 0.012 seconds, Fetched: 1 row(s)
3.2.更改列名和列數(shù)據(jù)類型
- 先查看一下這表數(shù)據(jù)結(jié)構(gòu):
hive> desc emp;
OK eid int name string salary string destination string Time taken: 0.07 seconds, Fetched: 4 row(s)
- 把name變成ename伏恐,把salary數(shù)據(jù)類型變?yōu)閐ouble孩哑。
hive> ALTER TABLE emp CHANGE name ename String;
OK Time taken: 0.118 seconds
hive> ALTER TABLE emp CHANGE salary salary Double;
OK Time taken: 0.077 seconds
hive> desc emp;
OK eid int ename string salary double destination string Time taken: 0.055 seconds, Fetched: 4 row(s)
- 增加一列:
dept hive> ALTER TABLE emp ADD COLUMNS (dept STRING COMMENT 'Department name');
OK Time taken: 0.071 seconds
hive> desc emp;
OK eid int ename string salary double destination string dept string Department name Time taken: 0.073 seconds, Fetched: 5 row(s) 此時(shí)再查看表結(jié)構(gòu),已加入新字段dept脐湾。
4.刪除表
hive> show tables;
OK empemployee Time taken: 0.011 seconds, Fetched: 2 row(s)
hive> DROP TABLE IF EXISTS employee;
OK Time taken: 0.295 seconds
hive> show tables;
OK emp Time taken: 0.011 seconds, Fetched: 1 row(s)
5.清空表:先查看在清空臭笆。
hive> select * from employee;
OK
1201 Gopal 45000.0 Technical manager
1202 Manisha 45000.0 Proof reader
1203 Masthanvali 40000.0 Technicali writer
1204 Kiran 40000.0 Hr Admin
1205 Kranthi 30000.0 Op Admin
Time taken: 0.031 seconds, Fetched: 5 row(s)
hive> truncate table employee;
OK Time taken: 0.064 seconds
hive> select * from employee;
OK Time taken: 0.054 seconds
受限于篇幅原因,剩下的部分請(qǐng)看這里http://www.reibang.com/p/8854c552c0cf