學(xué)習(xí)記錄3 Hadoop生態(tài)圈技術(shù)棧(一)

這里先做一下簡要的學(xué)習(xí)。

這里屬于數(shù)據(jù)開發(fā)范疇,所以首先肯定是先看一下數(shù)據(jù)倉庫的工具------hive。

hive簡介

Hadoop本身的三個部分HDFS(數(shù)據(jù)儲存),MapReduce(數(shù)據(jù)分析處理)和YARN(集群資源管理和調(diào)度)。其實乍一看這幾個方面其實已經(jīng)較為完善了,看著是可以滿足一整套流程的,那么hive存在的意義是什么呢?

其存在的意義呢,個人感覺是為了方便一點。原因有二,其一是MapReduce本身的開發(fā)難度較大,學(xué)習(xí)成本比較高;其二就是HDFS儲存的文件沒有字段名,甚至沒有數(shù)據(jù)類型,這就使得這個數(shù)據(jù)儲存看起來很讓人惡心了。

而Hive就由此而生,可以將結(jié)構(gòu)化的數(shù)據(jù)文件“映射”成一張清晰的表,并且也提供了類似SQL的查詢功能。其實功能就這么點,說到底就是將MapReduce的任務(wù)換成類似SQL去計算,這樣呢就解決了以上問題。當(dāng)然了底層數(shù)據(jù)還是HDFS,所以上面提到的是“映射”二字。

Hive的安裝部分這里就不浪費時間講了,一些環(huán)境、驅(qū)動什么的弄起來也挺復(fù)雜的。

hive勉強(qiáng)也算是一門編程語言,那么這里就大概說一下他的數(shù)據(jù)類型和文件格式吧,在基本數(shù)據(jù)結(jié)構(gòu)上面與Java很類似,整數(shù)型、浮點型、布爾型、字符串型等等,該有的基本也都有,在數(shù)據(jù)類型轉(zhuǎn)化上面也是有函數(shù)的。

select? ?cast ('1111'? as? int);

這樣就直接實現(xiàn)了字符串轉(zhuǎn)數(shù)值,其實也很簡單啦,感覺應(yīng)該不會很常用,希望要用的時候可以記起來。

除了基本數(shù)據(jù)結(jié)構(gòu)以外就是集合數(shù)據(jù)類型了,包括array(有序集合),map(鍵值對),struct(不同類型的集合),union(不同類型元素在同一字段不同行)。

這四個數(shù)據(jù)類型都是集合,就是內(nèi)部存的數(shù)據(jù)不同,最普遍的應(yīng)該還是array,簡單的單數(shù)據(jù)類型集合。例如(1,2,3)

那么如何從集合里面取值呢?

用[ ]就可以,這點倒是和Python類似了。

除了union數(shù)據(jù)類型寫得稀里糊涂以外,其他也還是蠻好理解的,array和map應(yīng)該還是最常用的類型了,struct存在的意義不知道在哪,以后希望能看到再頓悟吧。至于union,笑笑就可以了。

hive的文本文件數(shù)據(jù)編碼

hive的儲存格式是定義好的,當(dāng)然也可以人為自己去定義,但是我相信沒有哪個憨批會自己去重新定義。

首先就是hive自己的默認(rèn)分割符,除了換行以外就是^A,^B,^C,有點印象就可以,知道它是分割符,這就避免了看代碼不知道這個古怪符號的尷尬局面。至于三種^的區(qū)別其實也很簡單,A就是create table才是產(chǎn)生的分割符,B就是array,map,struct的元素分割符。而C就是map里面鍵值對的分割符號了。

hive操作---DDL命令

這個就是查詢之前更加基礎(chǔ)的命令了,DDL就是數(shù)據(jù)定義語言,主要命令就是create、alter、drop之類的。定義的就是數(shù)據(jù)庫的結(jié)構(gòu)或者數(shù)據(jù)類型。

這個hive的DDL命令與SQL幾乎完全相同,這里我是一點不想看了,主要還是sql看吐了。

內(nèi)部表與外部表

hive值得一提的一點就是這個內(nèi)部和外部表。雖然我現(xiàn)在還沒弄懂兩者創(chuàng)立的原因。

在創(chuàng)建表格時,默認(rèn)內(nèi)部表,加上external才會變成外部表,而生產(chǎn)中,大多使用外部表。

兩者區(qū)別主要在刪除上,內(nèi)部表刪除就是真的刪除,外部表刪除會保留數(shù)據(jù),只刪定義。這里我是沒懂,刪定義?數(shù)據(jù)保留?那我不是刪了個寂寞嗎?


如果在建表時出錯了,就是表建錯了,別著急,這里學(xué)習(xí)一下補(bǔ)救方法,應(yīng)該會派上用場。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容