版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
緒論第1章緒論第2章結(jié)構(gòu)化數(shù)據(jù)倉庫——Hive第3章列存儲數(shù)據(jù)庫——HBase第4章文檔存儲數(shù)據(jù)庫——MongoDB第5章文檔存儲數(shù)據(jù)庫第6章數(shù)據(jù)傳輸工具Sqoop第7章廣電用戶數(shù)據(jù)存儲與分析隨著互聯(lián)網(wǎng)、物聯(lián)網(wǎng)及云計算等技術(shù)的快速興起,人類社會中數(shù)據(jù)的增長方式與以往任何時期都有了巨大的不同。不僅數(shù)據(jù)規(guī)模越來越大,數(shù)據(jù)形式越來越復(fù)雜,數(shù)據(jù)的更新速度越來越快,數(shù)據(jù)與人們生活的密切程度也越來越高。據(jù)美國互聯(lián)網(wǎng)數(shù)據(jù)中心研究,僅僅互聯(lián)網(wǎng)上的數(shù)據(jù)每年就呈現(xiàn)50%左右的增長。除此之外,全世界的工業(yè)設(shè)備、交通工具、生活電器、移動終端,也都隨時測量和傳遞著有關(guān)震動、位置、溫度、濕度乃至人類之間相互聯(lián)系的變化情況,海量數(shù)據(jù)已成為目前數(shù)據(jù)信息最明顯的標(biāo)簽之一。人類已經(jīng)進入了一個“大數(shù)據(jù)”時代,數(shù)據(jù)的規(guī)模更加龐大,數(shù)據(jù)的種類不再單一,快速查詢、定位并提供數(shù)據(jù)的要求也越來越高,與此緊密相關(guān)的數(shù)據(jù)存儲與傳統(tǒng)的數(shù)據(jù)存儲相比亦發(fā)生了巨大變化。項目描述項目背景為后續(xù)更好地學(xué)習(xí)大數(shù)據(jù)存儲的相關(guān)知識,本項目將通過大數(shù)據(jù)簡介及大數(shù)據(jù)存儲技術(shù)的介紹,讓讀者對大數(shù)據(jù)技術(shù)體系及大數(shù)據(jù)存儲技術(shù)有一定的了解,為真正生產(chǎn)環(huán)境中的存儲技術(shù)選型奠定好架構(gòu)設(shè)計的基礎(chǔ)。項目描述項目目標(biāo)隨著互聯(lián)網(wǎng)、物聯(lián)網(wǎng)及云計算等技術(shù)的快速興起,人類社會中數(shù)據(jù)的增長方式與以往任何時期都有了巨大的不同。不僅數(shù)據(jù)規(guī)模越來越大,數(shù)據(jù)形式越來越復(fù)雜,數(shù)據(jù)的更新速度越來越快,數(shù)據(jù)與人們生活的密切程度也越來越高。據(jù)美國互聯(lián)網(wǎng)數(shù)據(jù)中心研究,僅僅互聯(lián)網(wǎng)上的數(shù)據(jù)每年就呈現(xiàn)50%左右的增長。除此之外,全世界的工業(yè)設(shè)備、交通工具、生活電器、移動終端,也都隨時測量和傳遞著有關(guān)震動、位置、溫度、濕度乃至人類之間相互聯(lián)系的變化情況,海量數(shù)據(jù)已成為目前數(shù)據(jù)信息最明顯的標(biāo)簽之一。人類已經(jīng)進入了一個“大數(shù)據(jù)”時代,數(shù)據(jù)的規(guī)模更加龐大,數(shù)據(jù)的種類不再單一,快速查詢、定位并提供數(shù)據(jù)的要求也越來越高,與此緊密相關(guān)的數(shù)據(jù)存儲與傳統(tǒng)的數(shù)據(jù)存儲相比亦發(fā)生了巨大變化。項目描述項目分析1大數(shù)據(jù)的存儲技術(shù)目錄大數(shù)據(jù)簡介2大數(shù)據(jù)存儲是大數(shù)據(jù)技術(shù)體系中的一部分。為此,了解大數(shù)據(jù)的概念、特征和應(yīng)用領(lǐng)域,熟悉大數(shù)據(jù)技術(shù)體系,是理解大數(shù)據(jù)存儲技術(shù)的前提和基礎(chǔ)。任務(wù)描述
“大數(shù)據(jù)”一詞早在上世紀80年代就已提出,并于2009年開始成為IT行業(yè)的流行詞匯,但作為一個較為抽象的概念,至今業(yè)界還沒有對“大數(shù)據(jù)”給出一個確切、統(tǒng)一的定義。維基百科:在合理的時間內(nèi),無法運用傳統(tǒng)的數(shù)據(jù)庫管理工具或數(shù)據(jù)處理軟件,完成捕獲、管理和處理等功能的大型而復(fù)雜的數(shù)據(jù)集。麥肯錫:大數(shù)據(jù)是指在一定時間內(nèi)無法用傳統(tǒng)數(shù)據(jù)庫軟件工具采集、存儲、管理和分析其內(nèi)容的數(shù)據(jù)集合。Gartner:大數(shù)據(jù)是指需要借助新的處理模式才能擁有更強的決策力、洞察發(fā)現(xiàn)力和流程優(yōu)化能力的具有海量、多樣化和高增長率等特點的信息資產(chǎn)。大數(shù)據(jù)的概念大數(shù)據(jù)的特征處理速度快數(shù)據(jù)價值密度低數(shù)據(jù)種類多數(shù)據(jù)規(guī)模大目前,大數(shù)據(jù)已滲透到各行業(yè)和各業(yè)務(wù)職能領(lǐng)域。電商行業(yè):通過海量的商品交易數(shù)據(jù),不僅可以統(tǒng)計出消費熱點、客戶的消費習(xí)慣、消費特點、影響消費的因素等,還能預(yù)測出消費趨勢、流行趨勢等。醫(yī)療行業(yè):在疫情追蹤、溯源與預(yù)警、輔助醫(yī)療救治、助力資源合理配置及輔助決策中得到廣泛應(yīng)用,提升各地疫情防控工作效率。為防控“戰(zhàn)役”提供了重要支持。交通行業(yè):通過提前預(yù)測道路交通情況,為出行提供優(yōu)化方案,在助力交通部門提高道路交通把控能力,防止和緩解交通擁堵等方面起到了極為重要的作用。大數(shù)據(jù)的應(yīng)用領(lǐng)域
大數(shù)據(jù)的技術(shù)體系,就是以從各種類型海量數(shù)據(jù)中快速獲取有價值的信息為目的,由大量在大數(shù)據(jù)領(lǐng)域涌現(xiàn)出的數(shù)據(jù)采集、存儲、處理和呈現(xiàn)等相關(guān)技術(shù)所組成的相互聯(lián)系的技術(shù)整體。大數(shù)據(jù)的技術(shù)體系1大數(shù)據(jù)的存儲技術(shù)目錄大數(shù)據(jù)簡介2數(shù)據(jù)可以存儲在文件、數(shù)據(jù)庫或數(shù)據(jù)倉庫中。為此,首先解釋3種數(shù)據(jù)存儲的方式,然后對數(shù)據(jù)庫存儲中常用的分布式數(shù)據(jù)庫進行簡要介紹。任務(wù)描述數(shù)據(jù)存儲簡介1.基于文件系統(tǒng)的數(shù)據(jù)存儲分布式文件系統(tǒng)架構(gòu)圖文件系統(tǒng)是操作系統(tǒng)用于在分區(qū)上、存儲設(shè)備上負責(zé)組織、存取與管理文件的機構(gòu),主要由3部分組成:與文件管理有關(guān)軟件、被管理的文件以及實施文件管理所需的數(shù)據(jù)結(jié)構(gòu)。其中,被管理的文件,即數(shù)據(jù),是以文件的形式存儲在各存儲設(shè)備上,并由操作系統(tǒng)統(tǒng)一管理。數(shù)據(jù)存儲簡介2.基于數(shù)據(jù)庫的數(shù)據(jù)存儲數(shù)據(jù)庫(Database)就是按照一定的數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)的組織形式或數(shù)據(jù)之間的聯(lián)系)進行組織、存儲和管理數(shù)據(jù)的倉庫。通過數(shù)據(jù)庫提供的多種方式可以方便地管理數(shù)據(jù)庫里的數(shù)據(jù)。T指采用了關(guān)系模型來組織數(shù)據(jù)的數(shù)據(jù)庫,以由行和列所組成的二維表格的形式存儲數(shù)據(jù)。指那些非嚴格關(guān)系型的、分布式的、不保證遵循ACID原則的數(shù)據(jù)庫關(guān)系型數(shù)據(jù)庫非關(guān)系型數(shù)據(jù)庫數(shù)據(jù)存儲簡介2.基于文件系統(tǒng)的數(shù)據(jù)存儲關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫是人類社會在處理數(shù)據(jù)不同階段而出現(xiàn)的不同產(chǎn)物,分別適用于不同的場景。關(guān)系型數(shù)據(jù)庫非關(guān)系型數(shù)據(jù)庫優(yōu)勢易理解建表靈活易使用儲存靈活易維護處理數(shù)據(jù)量巨大不足海量數(shù)據(jù)處理效率低復(fù)雜查詢能力弱數(shù)據(jù)庫系統(tǒng)升級或擴展時,需要停機事務(wù)處理能力弱數(shù)據(jù)存儲簡介3.基于數(shù)據(jù)倉庫的數(shù)據(jù)存儲數(shù)據(jù)倉庫存儲的主要是歷史數(shù)據(jù),并通過維度表用于對數(shù)據(jù)的分析。數(shù)據(jù)倉庫通過系統(tǒng)的分析、整理和組織大量的歷史數(shù)據(jù),以聯(lián)機分析處理(OLAP)和數(shù)據(jù)挖掘等各種方法,幫助決策者快速有效的從大量數(shù)據(jù)中,分析出有價值的信息,以實現(xiàn)輔助決策,構(gòu)建商業(yè)智能。0面向主題0集成0相對穩(wěn)定0反應(yīng)歷史變化分布式數(shù)據(jù)庫簡介1.分布式數(shù)據(jù)庫及其管理系統(tǒng)分布式數(shù)據(jù)庫是在傳統(tǒng)集中式數(shù)據(jù)庫的基礎(chǔ)上發(fā)展而來的,是針對大數(shù)據(jù)存儲管理而快速發(fā)展起來的關(guān)鍵技術(shù),是數(shù)據(jù)庫技術(shù)和網(wǎng)絡(luò)技術(shù)不斷發(fā)展、互相融合、互相促進的結(jié)果。其基本思想是借助計算機網(wǎng)絡(luò)技術(shù),將海量數(shù)據(jù)分散存儲在網(wǎng)絡(luò)中的不同存儲節(jié)點,并通過分布式計算技術(shù),將這些分散的物理存儲單元連接起來組成一個邏輯上統(tǒng)一的數(shù)據(jù)庫,從而在獲取更大存儲容量的同時,實現(xiàn)更高的并發(fā)訪問量。分布式數(shù)據(jù)庫管理系統(tǒng)是一種專門為分布式數(shù)據(jù)庫所設(shè)計的,用于建立、使用和維護分布式數(shù)據(jù)庫的大型軟件,通過借助存儲引擎和計算引擎,對分布式數(shù)據(jù)庫進行統(tǒng)一的管理,以保證分布式數(shù)據(jù)庫的安全性和完整性。分布式數(shù)據(jù)庫2.NoSQL數(shù)據(jù)庫的特點靈活的數(shù)據(jù)模型可擴展性強高可用性高并發(fā)性NoSQL(Not
Only
SQL,可意為“不僅僅是SQL”)數(shù)據(jù)庫,是對不同于傳統(tǒng)的關(guān)系數(shù)據(jù)庫的統(tǒng)稱。0000分布式數(shù)據(jù)庫3.NoSQL數(shù)據(jù)庫的分類鍵值數(shù)據(jù)庫Redis、SimpleDB列族數(shù)據(jù)庫文檔數(shù)據(jù)庫圖形數(shù)據(jù)庫HBase、BigTableMongoDB、CruchDBNeo4J、GraphDB在大數(shù)據(jù)的儲存與處理上,NoSQL具備傳統(tǒng)關(guān)系型數(shù)據(jù)庫無法比擬的性能優(yōu)勢。隨著人們對非關(guān)系型數(shù)據(jù)庫的日益重視,目前已開發(fā)出眾多性能優(yōu)秀的NoSQL數(shù)據(jù)庫產(chǎn)品。人類已經(jīng)進入了一個“大數(shù)據(jù)”時代,數(shù)據(jù)的規(guī)模更加龐大,數(shù)據(jù)的種類不再單一,快速查詢、定位并提供數(shù)據(jù)的要求也越來越高,與此緊密相關(guān)的數(shù)據(jù)存儲與傳統(tǒng)的數(shù)據(jù)存儲相比亦發(fā)生了巨大變化。首先介紹了大數(shù)據(jù)的概念、特征、應(yīng)用領(lǐng)域和技術(shù)體系。再根據(jù)數(shù)據(jù)的存儲方式介紹了大數(shù)據(jù)技術(shù)體系中的存儲技術(shù)。分布式數(shù)據(jù)庫的概念分布式數(shù)據(jù)庫的特點分布式數(shù)據(jù)庫的分類小結(jié)
結(jié)構(gòu)化數(shù)據(jù)倉庫——Hive信息時代的來臨使得企業(yè)營銷焦點從以產(chǎn)品中心轉(zhuǎn)變?yōu)橐钥蛻魹橹行?,客戶關(guān)系管理成為企業(yè)的核心問題??蛻絷P(guān)系管理的關(guān)鍵問題是客戶分類,通過客戶分類,可以得到不同價值的客戶,從而采取個性化服務(wù)方案,將有限營銷資源集中于高價值客戶,實現(xiàn)企業(yè)利潤最大化目標(biāo)。國內(nèi)某航空公司面臨著常旅客流失,競爭力下降和航空資源未充分利用等經(jīng)營危機。目前該航空公司已積累了大量的會員檔案信息和其乘坐航班記錄,數(shù)據(jù)字段及其說明如右表所示。實現(xiàn)航空公司客戶價值分析首先需要對航空客戶數(shù)據(jù)進行探索分析和處理,考慮到數(shù)據(jù)量、數(shù)據(jù)類型的問題,將使用Hive數(shù)據(jù)倉庫工具對航空客戶數(shù)據(jù)進行數(shù)據(jù)存儲、探索分析和處理。項目描述項目背景字段名稱字段說明客戶基本信息MEMBER_NO會員卡號FFP_DATE入會時間FIRST_FLIGHT_DATE第一次飛行日期GENDER性別FFP_TIER會員卡級別WORK_CITY工作地城市WORK_PROVINCE工作地所在省份WORK_COUNTRY工作地所在國家AGE年齡乘機信息FLIGHT_COUNT觀測窗口內(nèi)的飛行次數(shù)LOAD_TIME觀測窗口的結(jié)束時間LAST_TO_END最后一次乘機時間至觀測窗口結(jié)束時長AVG_DISCOUNT平均折扣率SUM_YR觀測窗口的票價收入SEG_KM_SUM觀測窗口的總飛行公里數(shù)LAST_FLIGHT_DATE末次飛行日期AVG_INTERVAL平均乘機時間間隔MAX_INTERVAL最大乘機間隔積分信息EXCHANGE_COUNT積分兌換次數(shù)EP_SUM總精英積分PROMOPTIVE_SUM促銷積分PARTNER_SUM合作伙伴積分POINTS_SUM總累計積分本項目將對Hive的架構(gòu)原理、安裝流程進行介紹,結(jié)合航空公司客戶價值分析實例,詳細介紹Hive的基本操作,并使用Hive實現(xiàn)航空公司客戶價值分析建模的特征數(shù)據(jù)的構(gòu)建。項目描述項目目標(biāo)學(xué)習(xí)Hive的架構(gòu)原理及集群搭建過程,根據(jù)航空公司客戶價值分析的業(yè)務(wù)需求安裝配置Hive集群。學(xué)習(xí)Hive表創(chuàng)建、管理與表數(shù)據(jù)的導(dǎo)入導(dǎo)出操作,在Hive中創(chuàng)建航空客戶信息表,并導(dǎo)入航空客戶數(shù)據(jù)至Hive表中。學(xué)習(xí)Hive的SELECT基礎(chǔ)查詢語句,對航空客戶數(shù)據(jù)字段進行描述性統(tǒng)計,查詢數(shù)據(jù)字段的空值、最大值和最小值,對航空客戶數(shù)據(jù)的質(zhì)量有一定了解。學(xué)習(xí)HiveQL子查詢語句與自定義UDF函數(shù),并對航空客戶數(shù)據(jù)進行基礎(chǔ)探索,統(tǒng)計客戶的會員級別和入會時長。對航空客戶數(shù)據(jù)進行業(yè)務(wù)探索,并構(gòu)建適合用于航空客戶價值分析建模的特征數(shù)據(jù)。項目描述項目分析1安裝配置Hive目錄了解Hive的架構(gòu)原理2創(chuàng)建航空客戶信息表3導(dǎo)入航空客戶數(shù)據(jù)到航空客戶信息表4查詢航空客戶信息表數(shù)據(jù)空值記錄數(shù)5Hive數(shù)據(jù)倉庫基于Hadoop開發(fā),是Hadoop生態(tài)圈組件之一,具備海量數(shù)據(jù)存儲和處理能力,是大數(shù)據(jù)領(lǐng)域離線批量處理數(shù)據(jù)的常用工具。本小節(jié)的任務(wù)是了解Hive的起源、特點及其架構(gòu),這是學(xué)習(xí)與掌握Hive海量數(shù)據(jù)存儲計算的第一步。任務(wù)描述Hive起源于Facebook(臉書)的杰夫·漢姆貝徹的團隊,F(xiàn)acebook是美國的一個社交網(wǎng)站,主要創(chuàng)始人是馬克·扎克伯格。2008年3月,F(xiàn)acebook每天產(chǎn)生200GB的評價數(shù)據(jù)。2008年10月,每天產(chǎn)生的數(shù)據(jù)經(jīng)壓縮后已經(jīng)超過了2TB。面對越來越大的數(shù)據(jù)規(guī)模,傳統(tǒng)的數(shù)據(jù)庫已經(jīng)無法滿足數(shù)據(jù)的管理和分析的需求,為了解決這一問題,F(xiàn)acebook自主研發(fā)出一款數(shù)據(jù)管理規(guī)模遠超傳統(tǒng)數(shù)據(jù)庫的新產(chǎn)品——Hive。認識Hive1.Hive的簡介Hive是基于HDFS和MapReduce的分布式數(shù)據(jù)倉庫。傳統(tǒng)的數(shù)據(jù)庫主要應(yīng)用于基本的、日常的事務(wù)處理,如銀行轉(zhuǎn)賬。數(shù)據(jù)倉庫側(cè)重決策支持,提供直觀的查詢結(jié)果,主要用于數(shù)據(jù)分析。Hive與傳統(tǒng)數(shù)據(jù)庫(RDBMS)之間的對比如下表所示。認識Hive對比項HiveRDBMS查詢語言HQLSQL數(shù)據(jù)存儲HDFS本地文件系統(tǒng)執(zhí)行MapReduce執(zhí)行引擎執(zhí)行延遲高低處理數(shù)據(jù)規(guī)模大小數(shù)據(jù)更新不支持支持模式讀模式寫模式Hive具有可伸縮、可擴展、高容錯的特點。可伸縮:Hive為超大數(shù)據(jù)集設(shè)計了計算和擴展能力(MapReduce作為計算引擎,HDFS作為存儲系統(tǒng))。一般情況下,不需要重啟服務(wù)Hive就可以自由的擴展集群的規(guī)模??蓴U展:除了HQL自身提供的能力,用戶還可以自定義數(shù)據(jù)類型、也可以用任何語言自定義Mapper和Reducer腳本,還可以自定義函數(shù)(普通函數(shù)、聚集函數(shù))等,這賦予了Hive極大的可擴展性。高容錯:Hive本身并沒有執(zhí)行機制,用戶查詢的執(zhí)行是通過MapReduce框架實現(xiàn)的,由于MapReduce框架本身具有高容錯的特點,所以Hive也相應(yīng)具有高容錯的特點。認識Hive2.Hive的特點Hive相較于傳統(tǒng)的數(shù)據(jù)庫,Hive結(jié)構(gòu)更為簡單,處理數(shù)據(jù)的規(guī)模更為龐大,但Hive不支持數(shù)據(jù)更新,有較高的延遲,并且Hive在作業(yè)提交和調(diào)度的時候需要大量的開銷。Hive并不能夠在大規(guī)模數(shù)據(jù)集上實現(xiàn)低延遲快速的查詢。Hive主要適用于日志分析、多維度數(shù)據(jù)分析,海量結(jié)構(gòu)化數(shù)據(jù)離線分析等場景。認識HiveHive架構(gòu)由用戶接口、元數(shù)據(jù)庫、解析器、Hadoop集群組成。了解Hive的架構(gòu)用戶接口:用于連接訪問Hive,包括命令行接口(CLI)、JDBC/ODBC和HWI(HiveWebInterface)3種方式。Hive元數(shù)據(jù)庫(MetaStore):Hive數(shù)據(jù)包括數(shù)據(jù)文件和元數(shù)據(jù),數(shù)據(jù)文件存儲在HDFS,元數(shù)據(jù)信息存儲在數(shù)據(jù)庫中,如Derby(Hive默認數(shù)據(jù)庫)、MySQL,Hive中的元數(shù)據(jù)信息包括表的名字、表的列和分區(qū)、表的屬性、表的數(shù)據(jù)所在的目錄等。Hive解析器(驅(qū)動Driver):Hive解析器的核心功能是根據(jù)用戶編寫的SQL語法匹配出相應(yīng)的MapReduce模板,并形成對應(yīng)的MapReducejob進行執(zhí)行,Hive中的解析器在運行時會讀取元數(shù)據(jù)庫MetaStore中的相關(guān)信息。了解Hive的架構(gòu)Hadoop集群:Hive用HDFS進行存儲,用MapReduce進行計算,Hive數(shù)據(jù)倉庫的數(shù)據(jù)存儲在HDFS中,業(yè)務(wù)實際分析計算是利用MapReduce執(zhí)行的。了解Hive的架構(gòu)從Hive架構(gòu)圖可以看出,Hive本質(zhì)上可以理解為一個客戶端工具,或是一個將SQL語句解析成MapReduce作業(yè)的引擎。Hive本身不存儲和計算數(shù)據(jù),它完全依賴于HDFS和MapReduce。1安裝配置Hive目錄了解Hive的架構(gòu)原理2創(chuàng)建航空客戶信息表3導(dǎo)入航空客戶數(shù)據(jù)到航空客戶信息表4查詢航空客戶信息表數(shù)據(jù)空值記錄數(shù)5對Hive有了初步了解后,還需要安裝Hive組件,這是學(xué)習(xí)Hive的前提條件。Hive使用Hadoop的MapReduce作為執(zhí)行引擎,使用HDFS作為底層存儲,因此安裝Hive之前需要先搭建Hadoop集群環(huán)境。本小節(jié)的任務(wù)是搭建Hadoop集群和Hive工具。任務(wù)描述由于Hive完全依賴于Hadoop的HDFS和MapReduce,所以在安裝配置Hive前需要先搭建好Hadoop集群。在本文中采用的分布式Hadoop集群版本為2.6.4,共有4個節(jié)點,包括1個主節(jié)點和3個子節(jié)點主節(jié)點主機名為master子節(jié)點分別為slave1、slave2和slave3每個節(jié)點都采用一個單核處理器,內(nèi)存最大值均為1024MB,操作系統(tǒng)為Centos版本的Linux操作系統(tǒng)。搭建Hadoop集群在Linux系統(tǒng)主節(jié)點master下啟動集群,在master、slave1、slave2和slave3上分別執(zhí)行命令“jps”,若出現(xiàn)右圖所示的信息,則說明集群啟動成功。集群節(jié)點均配置了主機名與IP地址的映射,因此在Hive的配置過程中,會直接使用主機名代替IP地址。搭建Hadoop集群Hive會將表中的元數(shù)據(jù)信息存儲在數(shù)據(jù)庫中,但Hive的默認數(shù)據(jù)庫Derby存在并發(fā)性能差的問題,在實際生產(chǎn)環(huán)境中適用性較差,因此在實際生產(chǎn)中常常會使用其他數(shù)據(jù)庫作為元數(shù)據(jù)庫以滿足實際需求。MySQL是一個開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQLAB公司開發(fā),屬于Oracle旗下產(chǎn)品。MySQL是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,它具有體積小、速度快、成本低等特點,適合作為存儲Hive元數(shù)據(jù)的數(shù)據(jù)庫。安裝MySQL后,在命令行輸入“mysql-uroot-p123456”(根據(jù)安裝時所示的設(shè)置,用戶名為root,密碼為123456)命令登錄MySQL,MySQL設(shè)置遠程訪問權(quán)限命令。配置MySQL數(shù)據(jù)庫完成Hadoop集群準(zhǔn)備以及MySQL的配置后,可以開始安裝并配置Hive,安裝配置Hive需要以下3個文件。MySQL驅(qū)動包:mysql-connector-java-5.1.42-bin.jar。Hive安裝包:apache-hive-1.2.1-bin.tar.gz。配置文件:hive-site.xml。在Linux系統(tǒng)中,Hive的安裝配置步驟如下。將準(zhǔn)備的文件上傳至Linux系統(tǒng)的/usr/local/src目錄下。在命令行輸入“cd/usr/local/src”命令切換至/usr/local/src目錄,再輸入“tar-xzvfapache-hive-1.2.1-bin.tar.gz-C/usr/local/”命令,解壓apache-hive-1.2.1-bin.tar.gz文件至/usr/local/目錄下。在命令行輸入“mv/usr/local/apache-hive-1.2.1-binhive”命令,修改apache-hive-1.2.1-bin名稱為hive。配置Hive數(shù)據(jù)倉庫Hive安裝完成后,輸入“l(fā)s-l../”命令,查看/usr/local/src目錄的上一級目錄(即/usr/local)包含的詳細信息,可在/usr/local/目錄下看見Hive的安裝目錄“hive”,如下圖所示。配置Hive數(shù)據(jù)倉庫接著Hive的安裝配置。進入到/usr/local/hive/conf目錄下,執(zhí)行“cphive-env.sh.templatehive-env.sh”命令復(fù)制hive-env.sh.template文件并重命名為hive-env.sh,然后執(zhí)行“vihive-env.sh”命令編輯hive-env.sh配置文件,在文件末尾添加Hadoop安裝目錄的路徑。執(zhí)行“vi/etc/profile”命令編輯/etc/profile文件,配置Hive的環(huán)境變量。執(zhí)行“source/etc/profile”命令使配置生效。在/usr/local/hive/conf目錄下,新建一個名為“hive-site.xml”的文件,并添加Hive配置。復(fù)制MySQL驅(qū)動包至$HIVE_HOME/lib目錄下。將Hadoop集群所有節(jié)點中的jline-0.9.94.jar替換為jline-2.12.jar。先將每個節(jié)點的/usr/local/hadoop-2.6.4/share/hadoop/yarn/lib目錄下的jline-0.9.94.jar重命名為jline-0.9.94.jar.bak。配置Hive數(shù)據(jù)倉庫在master節(jié)點將/usr/local/hive/lib/目錄下的jline-2.12.jar分發(fā)到所有節(jié)點的/usr/local/hadoop-2.6.4/share/hadoop/yarn/lib目錄下。Hive配置完成后,需要先啟動Hive的元數(shù)據(jù)服務(wù),再進入Hive。若出現(xiàn)下圖所示的界面,說明Hive安裝配置成功。配置Hive數(shù)據(jù)倉庫1安裝配置Hive目錄了解Hive的架構(gòu)原理2創(chuàng)建航空客戶信息表3導(dǎo)入航空客戶數(shù)據(jù)到航空客戶信息表4查詢航空客戶信息表數(shù)據(jù)空值記錄數(shù)5成功安裝配置Hive后,即可使用Hive存儲數(shù)據(jù)。存儲數(shù)據(jù)前,需要在Hive中先創(chuàng)建表。本小節(jié)的任務(wù)是結(jié)合航空公司客戶數(shù)據(jù)的結(jié)構(gòu),在Hive中創(chuàng)建航空客戶信息表。任務(wù)描述在創(chuàng)建Hive表時需要指定字段的數(shù)據(jù)類型,Hive數(shù)據(jù)類型可以分為基礎(chǔ)數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型。Hive數(shù)據(jù)類型說明如下表所示。掌握Hive基礎(chǔ)數(shù)據(jù)類型
類型描述舉例基礎(chǔ)數(shù)據(jù)類型TINYINT1byte有符號整型20SMALLINT2byte有符號整型20INT4byte有符號整型20BIGINT8byte有符號整型20BOOLEAN布爾類型TrueFLOAT單精度浮點型3.14159DOUBLE雙精度浮點型3.14159STRING(CHAR、VARCHAR)字符串“Helloworld”TIMESTAMP(DATE)時間戳1327882394BINARY字節(jié)數(shù)組01復(fù)雜數(shù)據(jù)類型ARRAY數(shù)組類型(數(shù)組中字段的類型必須相同)user[1]MAP一組無序的鍵/值對user[‘name’]STRUCT一組命名的字段(字段類型可以不同)user.ageHive建表語法如下。CREATE[EXTERNAL]TABLE[IFNOTEXISTS]table_name[(col_namedata_type[COMMENTcol_comment],...)]//指定字段的名稱和字段數(shù)據(jù)類型。
[COMMENTtable_comment]//表的描述信息。
[PARTITIONEDBY(col_namedata_type[COMMENTcol_comment],...)]//表的分區(qū)信息。
[CLUSTEREDBY(col_name,col_name,...)[SORTEDBY(col_name[ASC|DESC],...)]INTOnum_bucketsBUCKETS]//表的桶信息。
[ROWFORMATrow_format]//表的數(shù)據(jù)分割信息,格式化信息。
[STOREDASfile_format]//表數(shù)據(jù)的存儲序列化信息。
[LOCATIONhdfs_path]//數(shù)據(jù)存儲的文件夾地址信息。創(chuàng)建表Hive中常見的表類型有3種:內(nèi)部表,外部表,分區(qū)表。創(chuàng)建數(shù)據(jù)表部分關(guān)鍵字解釋說明如下。CREATETABLE:創(chuàng)建一個指定名字的表,若相同名字的表已經(jīng)存在,則拋出異常,用戶可以用IFNOTEXISTS選項忽略這個異常,新表將不會被創(chuàng)建。EXTERNAL:若不使用EXTERNAL關(guān)鍵字則創(chuàng)建的表為內(nèi)部表,若使用EXTERNAL關(guān)鍵字則可以創(chuàng)建一個外部表,用戶可以訪問存儲在遠程位置(如HDFS)中的數(shù)據(jù),因此,當(dāng)數(shù)據(jù)位于遠程位置時,應(yīng)使用外部表。PARTITIONEDBY:使用該關(guān)鍵字可以創(chuàng)建分區(qū)表,一個表可以具有一個或多個分區(qū)字段,并根據(jù)分區(qū)字段中的每個值創(chuàng)建一個單獨的數(shù)據(jù)目錄。創(chuàng)建表內(nèi)部表是Hive中比較常見、基礎(chǔ)的表,表的創(chuàng)建方式與SQL語句大致相同,字段間的分隔符默認為制表符“\t”,需要根據(jù)實際情況修改分隔符。外部表描述了外部文件上的元數(shù)據(jù)。外部表數(shù)據(jù)可以由Hive外部的進程訪問和管理,這種方式可以滿足一份數(shù)據(jù)多人在線使用,因此外部表適用于部門間的共享數(shù)據(jù)的場景。創(chuàng)建表1.創(chuàng)建內(nèi)表2.創(chuàng)建外表內(nèi)部表和外部表區(qū)別在于,外部表的數(shù)據(jù)可以由Hive之外的進程管理(如HDFS)。當(dāng)外部表源數(shù)據(jù)位于HDFS時,刪除外部表僅僅是刪除元數(shù)據(jù)信息,源數(shù)據(jù)不會從遠程位置中刪除;而內(nèi)部表是由Hive進行管理的,在刪除內(nèi)部表時,源數(shù)據(jù)也會被刪除。一般情況下,在創(chuàng)建外部表時會將表數(shù)據(jù)存儲在Hive的數(shù)據(jù)倉庫路徑之外。創(chuàng)建表當(dāng)數(shù)據(jù)量很大時,查詢速度會很慢,耗費大量時間,如果只需查詢其中部分數(shù)據(jù),那么可以使用分區(qū)表,提高查詢的速度。分區(qū)表又分為靜態(tài)分區(qū)表和動態(tài)分區(qū)表,靜態(tài)分區(qū)表需要手動定義好每一個分區(qū)的值,再導(dǎo)入數(shù)據(jù)。動態(tài)分區(qū)表可以自動根據(jù)分區(qū)鍵值的不同而自動分區(qū),不需要手動導(dǎo)入不同分區(qū)數(shù)據(jù)。創(chuàng)建靜態(tài)分區(qū)表時,指定的分區(qū)字段名稱不可以和表字段名稱相同。動態(tài)分區(qū)表的創(chuàng)建與靜態(tài)分區(qū)表類似,但創(chuàng)建動態(tài)分區(qū)表前需要先開啟動態(tài)分區(qū)的功能并設(shè)置動態(tài)分區(qū)模式。創(chuàng)建表3.創(chuàng)建分區(qū)表Hive刪除表的語法如下。由于Hive外部表的數(shù)據(jù)并非由Hive管理,所以外部表被刪除后,外部表的數(shù)據(jù)仍舊保留。DROPTABLEtablename;在特定的情況下,可能只需要刪除表中的數(shù)據(jù),而不需要刪除表。Hive刪除表數(shù)據(jù)語法如下。由于Hive外部表的數(shù)據(jù)并非由Hive進行管理,因此改命令僅適用于刪除Hive內(nèi)部表的數(shù)據(jù),無法直接刪除外部表的數(shù)據(jù)。TRUNCATETABLEtablename;刪除表與表數(shù)據(jù)Hive修改表結(jié)構(gòu)的語法如下。//更改表名ALTERTABLEtable_nameRENAMETOnew_table_name;//更改列名稱/類型/位置/注釋ALTERTABLEtable_name[PARTITIONpartition_spec]CHANGE[COLUMN]col_old_namecol_new_namecolumn_type[COMMENTcol_comment][FIRST|AFTERcolumn_name][CASCADE|RESTRICT];修改表結(jié)構(gòu)Hive修改表結(jié)構(gòu)的語法如下。//添加/替換列ALTERTABLEtable_name[PARTITIONpartition_spec]//需要Hive0.14.0或更高
ADD|REPLACECOLUMNS(col_namedata_type[COMMENTcol_comment],...)[CASCADE|RESTRICT]//需要Hive1.1.0或更高//刪除列ALTERTABLEtable_nameDROP[COLUMN]column_name修改表結(jié)構(gòu)通常在創(chuàng)建表時,會根據(jù)數(shù)據(jù)的具體值為每個數(shù)據(jù)字段設(shè)置合適的數(shù)據(jù)類型,但當(dāng)數(shù)據(jù)字段過多且無法確認具體類型時,可以先將所有的數(shù)據(jù)字段先指定為string(字符串)類型,再用函數(shù)轉(zhuǎn)換為其他的數(shù)據(jù)類型,如timestamp(時間戳)、int(整型)等。在Hive中創(chuàng)建航空客戶信息內(nèi)部表,用于存儲航空客戶數(shù)據(jù),共有44個數(shù)據(jù)字段,統(tǒng)一設(shè)置為string類型。任務(wù)實現(xiàn)1安裝配置Hive目錄了解Hive的架構(gòu)原理2創(chuàng)建航空客戶信息表3導(dǎo)入航空客戶數(shù)據(jù)到航空客戶信息表4查詢航空客戶信息表數(shù)據(jù)空值記錄數(shù)5任務(wù)2.3中已經(jīng)完成了航空客戶信息表的創(chuàng)建,為了更加了解Hive導(dǎo)入、導(dǎo)出數(shù)據(jù)的方式,本小節(jié)的任務(wù)是實現(xiàn)將航空客戶數(shù)據(jù)導(dǎo)入航空客戶信息表中。任務(wù)描述Hive導(dǎo)入數(shù)據(jù)有如下常用的方式。將文件系統(tǒng)中的數(shù)據(jù)導(dǎo)入Hive。將其他Hive表查詢到的數(shù)據(jù)導(dǎo)入Hive。導(dǎo)入數(shù)據(jù)將文件系統(tǒng)中的數(shù)據(jù)導(dǎo)入Hive有兩種方式:將Linux本地文件系統(tǒng)的數(shù)據(jù)導(dǎo)入Hive,將HDFS的數(shù)據(jù)導(dǎo)入Hive。將Linux本地文件系統(tǒng)的數(shù)據(jù)導(dǎo)入Hive的語法如下。LOADDATA[LOCAL]INPATHfilepath[OVERWRITE]INTOTABLEtablename[PARTITION(partcol1=val1,partcol2=val2…)]導(dǎo)入數(shù)據(jù)1.將文件系統(tǒng)的數(shù)據(jù)導(dǎo)入Hive部分關(guān)鍵字解釋說明如下。LOCAL:導(dǎo)入語句若有LOCAL關(guān)鍵字,則說明是導(dǎo)入Linux本地的數(shù)據(jù),若不加LOCAL關(guān)鍵字,則是從HDFS導(dǎo)入數(shù)據(jù)。如果將HDFS的數(shù)據(jù)導(dǎo)入Hive表,那么HDFS上存儲的數(shù)據(jù)文件會被移動到表目錄下,因此原位置不再有存儲的數(shù)據(jù)文件。filepath:數(shù)據(jù)的路徑,可以是相對路徑(./data/a.txt),絕對路徑(/user/root/data/a.txt)或包含模式的完整URL(hdfs://master:8020/user/root/a.txt)。OVERWRITE:加入OVERWRITE關(guān)鍵字,表示導(dǎo)入模式為覆蓋模式,即覆蓋表之前的數(shù)據(jù);若不加OVERWRITE關(guān)鍵字,則表示導(dǎo)入模式為追加模式,即不清空表之前的數(shù)據(jù)。PARTITION:如果創(chuàng)建的是分區(qū)表,那么導(dǎo)入數(shù)據(jù)時需要使用PARTITION關(guān)鍵字指定分區(qū)字段的名稱。導(dǎo)入數(shù)據(jù)將其他Hive表查詢到的數(shù)據(jù)導(dǎo)入Hive有3種方法。查詢數(shù)據(jù)后單表插入。查詢數(shù)據(jù)后多表插入。查詢數(shù)據(jù)后建新表。導(dǎo)入數(shù)據(jù)1.將其他Hive表查詢到的數(shù)據(jù)導(dǎo)入HiveHive單表插入數(shù)據(jù)語法如下。INSERT[OVERWRITE|INTO]table表1[PARTITION(part1=val1,part2=val2)]SELECT字段1,字段2,字段3FROM表2;該語句表示從表2查詢出字段1、字段2和字段3的數(shù)據(jù)并插入到表1中,表1中的3個字段的類型與表2中的3個字段的類型應(yīng)一致。單表插入數(shù)據(jù)時可以使用PARTITION關(guān)鍵字指定分區(qū)插入。插入時選擇OVERWRITE關(guān)鍵字會覆蓋原有表或分區(qū)數(shù)據(jù),選擇INTO關(guān)鍵字則是追加數(shù)據(jù)到表或分區(qū)。導(dǎo)入數(shù)據(jù)(1)單表插入數(shù)據(jù)Hive支持多表插入,即可以在同一個查詢中使用多個insert子句,好處是只需要掃描一遍源表即可生成多個不相交的輸出。多表插入與單表插入的不同點在于語句寫法,多表插入將執(zhí)行查詢的表語句放在開頭的位置。其他關(guān)鍵字解釋同單表插入數(shù)據(jù)。Hive多表插入數(shù)據(jù)語法如下。FROM表1INSERT[OVERWRITE|INTO]TABLE表2SELECT字段1INSERT[OVERWRITE|INTO]TABLE表3SELECT字段2該語句表示從表1中查詢字段1插入到表2,從表1中查詢字段2插入到表3。表1中字段1的類型應(yīng)與表2中字段1的類型一致,表1中字段2的類型應(yīng)與表3中字段2的類型一致。導(dǎo)入數(shù)據(jù)(2)查詢數(shù)據(jù)后多表插入Hive查詢數(shù)據(jù)后建新表語法如下。CREATETABLE表2ASSELECT字段1,字段2,字段3FROM表1;該語句表示從表1中查詢字段1、字段2、字段3的數(shù)據(jù)并插入到新建的表2中。導(dǎo)入數(shù)據(jù)(3)查詢數(shù)據(jù)后建新表將Hive數(shù)據(jù)導(dǎo)出至Linux本地文件系統(tǒng)的語法如下。INSERTOVERWRITELOCALDIRECTORYout_path//導(dǎo)出表數(shù)據(jù)的目錄ROWFORMATDELIMITEDFIELDSTERMINATEDbyrow_format//表的數(shù)據(jù)分割信息,格式化信息SELECT*FROMtable_name;//需要導(dǎo)出的表數(shù)據(jù)導(dǎo)出數(shù)據(jù)1.將Hive數(shù)據(jù)導(dǎo)出至本地文件系統(tǒng)將Hive數(shù)據(jù)導(dǎo)出至HDFS的語法如下。INSERTOVERWRITEDIRECTORYout_path//導(dǎo)出表數(shù)據(jù)的目錄ROWFORMATDELIMITEDFIELDSTERMINATEDbyrow_format//表的數(shù)據(jù)分割信息,格式化信息SELECT*FROMtable_name;//需要導(dǎo)出的表數(shù)據(jù)Hive數(shù)據(jù)導(dǎo)出到本地文件系統(tǒng)和HDFS的語法非常相似,兩者之間的區(qū)別在于,Hive數(shù)據(jù)導(dǎo)出到本地文件系統(tǒng)的目標(biāo)目錄時需要添加LOCAL關(guān)鍵字,而Hive數(shù)據(jù)導(dǎo)出到HDFS無需添加LOCAL關(guān)鍵字。導(dǎo)出數(shù)據(jù)2.將Hive數(shù)據(jù)導(dǎo)出至HDFS在Linux系統(tǒng)/opt/data/目錄下,將航空客戶數(shù)據(jù)air_data.csv文件導(dǎo)入2.3小節(jié)創(chuàng)建的航空客戶信息表air_data中。在HDFS查看數(shù)據(jù)導(dǎo)入結(jié)果如下圖所示。任務(wù)實現(xiàn)1安裝配置Hive目錄了解Hive的架構(gòu)原理2創(chuàng)建航空客戶信息表3導(dǎo)入航空客戶數(shù)據(jù)到航空客戶信息表4查詢航空客戶信息表數(shù)據(jù)空值記錄數(shù)5完成數(shù)據(jù)導(dǎo)入后,一般需要對數(shù)據(jù)的質(zhì)量進行檢驗,數(shù)據(jù)的空值數(shù)量是檢驗數(shù)據(jù)質(zhì)量高低的一項指標(biāo)。一般情況下,數(shù)據(jù)空值越少數(shù)據(jù)質(zhì)量越高。數(shù)據(jù)的基本統(tǒng)計可以使用Hive的HQL語句實現(xiàn)。本小節(jié)的任務(wù)是使用HQL語句查詢航空客戶信息表數(shù)據(jù)中的空值記錄數(shù)。任務(wù)描述由于SQL的廣泛應(yīng)用,所以Hive開發(fā)人員根據(jù)Hive本身的特性設(shè)計了類SQL的查詢語言HQL。HQL查詢語句SELECT的語法如下。SELECT[ALL|DISTINCT]select_expr,select_expr,...FROMtable_reference[WHEREwhere_condition][GROUPBYcol_list][HAVINGhaving_condition][ORDERBYcol_list][CLUSTERBYcol_list|[DISTRIBUTEBYcol_list][SORTBYcol_list]][LIMIT[offset,]rows]認識SELECT語句結(jié)構(gòu)SELECT語句結(jié)構(gòu)的部分關(guān)鍵字說明如下。SELECT:SELECT關(guān)鍵字可以是聯(lián)合查詢或另一個查詢的子查詢的一部分,用戶可以使用該關(guān)鍵字查詢指定的表字段,也可以使用符號“*”查詢表的所有字段。ALL|DISTINCT:ALL和DISTINCT選項指定是否應(yīng)返回重復(fù)的行。Hive查詢默認為ALL,返回所有匹配的行。DISTINCT關(guān)鍵字是對查詢結(jié)果進行去重操作,不返回重復(fù)數(shù)據(jù)。WHERE:WHERE關(guān)鍵字其后是一個布爾表達式,用于條件過濾,用戶可以通過該關(guān)鍵字檢索出特定的數(shù)據(jù)。GROUPBY:表示根據(jù)某個字段對數(shù)據(jù)進行分組,一般情況下,GROUPBY必須要配合聚合函數(shù)(如COUNT()、MAX()等)一起使用,實現(xiàn)在分組之后對組內(nèi)結(jié)果的聚合操作。認識SELECT語句結(jié)構(gòu)HAVING:HAVING關(guān)鍵字通常與GROUPBY聯(lián)合使用,HAVING的本質(zhì)和WHERE一樣是用于進行數(shù)據(jù)條件篩選,但WHERE不可以在GROUPBY關(guān)鍵字后使用,HAVING關(guān)鍵字彌補了WHERE關(guān)鍵字不能與聚合函數(shù)聯(lián)合使用的不足。ORDERBY:使用該關(guān)鍵字可以令查詢結(jié)果按照某個字段進行排序,默認的情況下為升序(ASC)排序,用戶可以使用DESC關(guān)鍵字對查詢結(jié)果進行降序排序。LIMIT:LIMIT關(guān)鍵字可用于約束查詢結(jié)果返回的行數(shù),LIMIT接受一個或兩個自然數(shù)參數(shù)。當(dāng)只有一個參數(shù)時代表最大行數(shù)(最大值為0是則不返回任何結(jié)果)。當(dāng)有兩個參數(shù)時(需要Hive2.0.0及以上版本才支持寫入兩個參數(shù)),第一個參數(shù)指定返回行的起始位置,第二個參數(shù)指定要返回的最大行數(shù)。認識SELECT語句結(jié)構(gòu)使用HQL語言編寫查詢語句時,大部分語句會轉(zhuǎn)化成MapReduce任務(wù)進行查詢操作。Hive查詢語句不會轉(zhuǎn)化成MapReduce任務(wù)的情況主要有以下兩種。本地模式下,Hive可以簡單地讀取目標(biāo)目錄下的表數(shù)據(jù),然后將數(shù)據(jù)格式化后打印輸出到控制臺,例如當(dāng)執(zhí)行“select*fromtable_name”時可直接將表數(shù)據(jù)格式化輸出。查詢語句中使用WHERE進行條件過濾時,過濾的條件只與分區(qū)字段有關(guān)的情況下,無論是否使用LIMIT關(guān)鍵字限制輸出記錄條數(shù),均不會觸發(fā)MapReduce操作。認識SELECT語句結(jié)構(gòu)Hive中常用的運算符有兩種:算術(shù)運算符和關(guān)系運算符。Hive算術(shù)運算符Hive關(guān)系運算符了解運算符的使用作用符號作用符號加+乘*減-除/求余除法%
作用符號作用符號等值=非空值isnotnull不等值<>
全包含like小于<
半包含rlike大于>
非全包含notlike空值isnull
一般情況下,如果查詢的是表中所有行的一個子集,那么需要用到WHERE語句進行條件過濾。WHERE關(guān)鍵字通常還會和關(guān)系運算符聯(lián)合使用。使用WHERE語句進行條件查詢包含空值的數(shù)據(jù)會使數(shù)據(jù)分析過程陷入混亂,導(dǎo)致不可靠的輸出,因此對數(shù)據(jù)中的空值進行探索分析是非常有必要的。由于數(shù)據(jù)集中字段較多,所以選擇分析價值較高的6個數(shù)據(jù)字段,統(tǒng)計每個字段對應(yīng)的空值記錄數(shù)。選擇的6個數(shù)據(jù)字段分別為:觀測窗口的結(jié)束時間(LOAD_TIME)、入會時間(FFP_DATE)、最后一次乘機時間至觀測窗口結(jié)束時長(LAST_TO_END)、觀測窗口內(nèi)的飛行次數(shù)(FLIGHT_COUNT)、觀測窗口的總飛行公里數(shù)(SEG_KM_SUM)和平均折扣率(AVG_DISCOUNT)。分別統(tǒng)計每個字段對應(yīng)的空值記錄數(shù),統(tǒng)計結(jié)果如下表。在航空客戶信息表中查詢的6個字段的空值記錄數(shù)均為0,說明這是一份數(shù)據(jù)質(zhì)量較高的數(shù)據(jù)集。任務(wù)實現(xiàn)字段名稱空值記錄數(shù)字段名稱空值記錄數(shù)LOAD_TIME0FLIGHT_COUNT0FFP_DATE0SEG_KM_SUM0LAST_TO_END0AVG_DISCOUNT06統(tǒng)計會員數(shù)最多的會員級別目錄查詢航空客戶信息表字段數(shù)據(jù)的最大值和最小值7編寫UDF統(tǒng)計用戶入會時長8構(gòu)建航空客戶價值分析的特征數(shù)據(jù)9獲取數(shù)據(jù)集字段的最大值、最小值可以進一步地對數(shù)據(jù)集進行分析,同時也能為數(shù)據(jù)集的歸一化做準(zhǔn)備。本小節(jié)的任務(wù)是對航空客戶信息表字段的最大值和最小值進行查詢和統(tǒng)計。任務(wù)描述HiveQL有許多功能齊全的內(nèi)置函數(shù),熟練使用HiveQL的內(nèi)置函數(shù),可以更方便的執(zhí)行Hive增、刪、查、改等基礎(chǔ)操作。HiveQL常用內(nèi)置函數(shù)認識HiveQL內(nèi)置函數(shù)內(nèi)置函數(shù)描述函數(shù)名數(shù)學(xué)函數(shù)四舍五入round向上取整ceil向下取整floor隨機生成0到1的數(shù)rand自然指數(shù)exp對數(shù)log冪函數(shù)power開方函數(shù)sqrt字符串函數(shù)長度函數(shù)length字符串反轉(zhuǎn)reverse字符串連接concat帶分隔符的字符串連接concat_ws字符串截取substr轉(zhuǎn)大寫upper轉(zhuǎn)小寫lower認識HiveQL內(nèi)置函數(shù)內(nèi)置函數(shù)描述函數(shù)名日期函數(shù)字符轉(zhuǎn)日期格式to_date日期加法date_add日期減法date_sub轉(zhuǎn)時間戳unix_timestamp時間戳減法-時間戳轉(zhuǎn)日期from_unixtime邏輯函數(shù)與and或or非not其他函數(shù)聯(lián)合函數(shù)union可重復(fù)聯(lián)合函數(shù)unionall表連接函數(shù)join數(shù)據(jù)類型轉(zhuǎn)換castHiveQL常用內(nèi)置函數(shù)HiveQL有兩種聯(lián)合函數(shù)union和unionall,均是對查詢的結(jié)果集進行并集操作,兩者的區(qū)別在于。union函數(shù)返回的結(jié)果集不包括重復(fù)行,同時默認進行升序排序。unionall函數(shù)返回的結(jié)果集則包括重復(fù)行,并且不進行排序。認識HiveQL內(nèi)置函數(shù)1.
union和unionall的應(yīng)用使用union函數(shù)對表student_in的id字段以及表student_out的name字段進行聯(lián)合查詢,執(zhí)行結(jié)果如圖所示。從圖中可以看出,union函數(shù)返回的結(jié)果集中id字段、name字段不含重復(fù)記錄,且對查詢結(jié)果進行了升序排序。認識HiveQL內(nèi)置函數(shù)使用unionall函數(shù)對表student_in的id字段以及表student_out的name字段進行聯(lián)合查詢,執(zhí)行結(jié)果如圖所示。從圖可以看出,unionall函數(shù)的返回結(jié)果包含了重復(fù)的記錄,而且也沒有對查詢結(jié)果進行排序。認識HiveQL內(nèi)置函數(shù)在實際的應(yīng)用中,Hive往往會涉及到多個表的數(shù)據(jù)查詢操作。join函數(shù)可以實現(xiàn)多表連接查詢,可以將兩個或多個表的行記錄基于表間的共同字段進行連接(字段名不需要完全相同)。join函數(shù)通常結(jié)合on進行使用,on用于指定表間的連接條件。join函數(shù)和union函數(shù)的主要區(qū)別在于。join是根據(jù)指定的表間共同字段將多個表的數(shù)據(jù)拼接成一行一行的記錄。union函數(shù)是將多個表內(nèi)容拼接成一列一列的記錄,而且對拼接的字段沒有強制的要求。認識HiveQL內(nèi)置函數(shù)2.
join的應(yīng)用在Hive中創(chuàng)建學(xué)生成績表score,表包含學(xué)生ID(id)和成績(score)兩個字段,并將Linux本地/opt/work目錄下的score.csv文件數(shù)據(jù)導(dǎo)入score表中。使用joinon將學(xué)生信息表student_in和學(xué)生成績表score基于它們的共同字段id進行連接,查詢出學(xué)生姓名所對應(yīng)的成績,執(zhí)行結(jié)果如圖所示。從圖中可以看出,查詢結(jié)果結(jié)合了student_in和score兩個表,顯示了學(xué)生姓名和學(xué)生成績兩個數(shù)據(jù)字段。認識HiveQL內(nèi)置函數(shù)以觀測窗口的結(jié)束時間(LOAD_TIME)、入會時間(FFP_DATE)、最后一次乘機時間至觀測窗口結(jié)束時長、觀測窗口內(nèi)的飛行次數(shù)(FLIGHT_COUNT)、觀測窗口的總飛行公里數(shù)(SEG_KM_SUM)、平均折扣率(AVG_DISCOUNT)這6個字段為例,統(tǒng)計每個字段數(shù)據(jù)的最大值和最小值。由于觀測窗口的結(jié)束時間(LOAD_TIME)、入會時間(FFP_DATE)兩個字段的數(shù)據(jù)是日期類型的,所以在查詢前需要使用to_date函數(shù)進行數(shù)據(jù)類型的轉(zhuǎn)換,將原本的string類型轉(zhuǎn)換為日期類型。最后一次乘機時間至觀測窗口結(jié)束時長(LAST_TO_END)、觀測窗口內(nèi)的飛行次數(shù)(FLIGHT_COUNT)、觀測窗口的總飛行公里數(shù)(SEG_KM_SUM)、平均折扣率(AVG_DISCOUNT)4個字段的數(shù)據(jù)為數(shù)值類型,需要用cast函數(shù)進行數(shù)據(jù)類型轉(zhuǎn)換,根據(jù)字段具體的數(shù)值將string類型轉(zhuǎn)換為int類型或float類型。任務(wù)實現(xiàn)統(tǒng)計結(jié)果如下表。從表中可以看出,觀測窗口的結(jié)束時間(LOAD_TIME)字段的最大值與最小值一致,說明所有用戶的觀察窗口結(jié)束時間都統(tǒng)一為2014年3月31日。從入會時間(FFP_DATE)字段的最大最小值可以看出,最早入會會員和最晚入會會員之間相差約9年,用戶入會時間存在較大差異。任務(wù)實現(xiàn)字段名最大值最小值LOAD_TIME2014-03-312014-03-31FFP_DATE2013-03-312004-11-01LAST_TO_END1.50.0FLIGHT_COUNT2132SEG_KM_SUM580717368AVG_DISCOUNT1.50.06統(tǒng)計會員數(shù)最多的會員級別目錄查詢航空客戶信息表字段數(shù)據(jù)的最大值和最小值7編寫UDF統(tǒng)計用戶入會時長8構(gòu)建航空客戶價值分析的特征數(shù)據(jù)9不同客戶之間的信息會存在著一定的差距,說明不同客戶之間的價值是不同的。為了解大部分客戶所處的級別信息,為客戶價值分析作準(zhǔn)備。本小節(jié)的任務(wù)是統(tǒng)計出會員數(shù)最多的會員級別。任務(wù)描述子查詢,即嵌套在其他查詢中的查詢語句,其結(jié)果集作為一個臨時表使用,查詢操作結(jié)束后釋放臨時表。Hive僅在FROM子句中支持子查詢,同時必須向子查詢定義一個名稱,因為FROM子句中的每個表都必須有一個名稱。子查詢選擇的字段必須具有唯一的名稱。子查詢可以帶有UNION的查詢表達式。Hive支持任意級別的子查詢。認識HiveQL子查詢使用GROUPBY關(guān)鍵字結(jié)合Hive的聚合函數(shù)可以根據(jù)某個字段對數(shù)據(jù)進行分組聚合操作。使用GROUPBY結(jié)合聚合函數(shù)count,根據(jù)動態(tài)分區(qū)表student_dyn_part的year字段對該表進行分組聚合,統(tǒng)計各年級總?cè)藬?shù),結(jié)果如圖所示。認識HiveQL子查詢1.
GROUPBY用法Hive子查詢語法如下。select...from(subquery)asname...//需要Hive0.13.0及以上版本在學(xué)生信息表student_in和學(xué)生成績表score中,使用子查詢實現(xiàn)查詢成績在80分以上的學(xué)生ID和姓名的操作。由于id字段為兩個表的共同字段,所以必須說明查詢的id字段源自哪個表,結(jié)果如圖所示。認識HiveQL子查詢2.Hive子查詢統(tǒng)計會員級別的人數(shù)需要按照會員卡級別(FFP_TIER)字段對航空客戶信息表進行分組,再使用count函數(shù)對分組信息進行聚合,統(tǒng)計出所有會員卡級別的人數(shù)。并將此查詢結(jié)果作為子查詢,查詢出會員數(shù)最多的會員人數(shù)。任務(wù)實現(xiàn)6統(tǒng)計會員數(shù)最多的會員級別目錄查詢航空客戶信息表字段數(shù)據(jù)的最大值和最小值7編寫UDF統(tǒng)計用戶入會時長8構(gòu)建航空客戶價值分析的特征數(shù)據(jù)9當(dāng)Hive提供的內(nèi)置函數(shù)無法滿足業(yè)務(wù)需求時,此時可以考慮使用用戶自定義函數(shù)(UDF)。本小節(jié)的任務(wù)是編寫UDF函數(shù)統(tǒng)計用戶入會時長[單位:天]。任務(wù)描述UDF只能實現(xiàn)一進一出的操作,如果需要實現(xiàn)多進一出,則需要實現(xiàn)其他種類的函數(shù)。Hive中有3種不同類型的自定義函數(shù)。UDF:操作單個數(shù)據(jù)行,產(chǎn)生單個數(shù)據(jù)行。UDAF:操作多個數(shù)據(jù)行,產(chǎn)生一個數(shù)據(jù)行。UDTF:操作一個數(shù)據(jù)行,產(chǎn)生多個數(shù)據(jù)行一個表作為輸出。編寫Hive中的UDF1.Hive自定義函數(shù)的種類UDF函數(shù)的編寫需要使用一個開發(fā)工具,這里使用IDEA。在IDEA的官網(wǎng)下載并安裝IDEA,安裝包名稱為ideaIU-2018.3.5.exe。在集成開發(fā)環(huán)境IDEA中,使用Hive的自定義UDF需要先將以下jar包導(dǎo)入至項目工程中。“/usr/local/hive/lib/”路徑下的所有jar包。“/usr/local/hadoop/share/hadoop/common/”路徑下的hadoop-common-2.6.4.jar(版本號可能不同)。“/usr/local/hadoop/share/hadoop/common/lib/”路徑下的slf4j-api-1.7.5.jar(版本號可能不同)。導(dǎo)入jar包后即可以在集成開發(fā)環(huán)境idea中編寫UDF,在自定義UDF中需要注意以下兩點。UDF必須繼承類org.apache.hadoop.hive.ql.exec.UDF。UDF必須實現(xiàn)evaluate函數(shù)。編寫Hive中的UDF2.自定義UDF將編寫完成后的函數(shù)封裝打包成一個jar包,并命名為MyUDF.jar,再上傳至Linux系統(tǒng)的/opt/目錄下。通過“hive”進入Hive命令后,在Hive中調(diào)用UDF步驟如下。輸入“addjar/opt/MyUDF.jar;”命令,將jar包MyUDF.jar添加至hive。輸入“createtemporaryfunctionstringJoinas‘hive_udf.stringJoin‘;”命令創(chuàng)建臨時函數(shù)stringJoin,臨時函數(shù)只會在當(dāng)前窗口生效。如果要創(chuàng)建永久函數(shù),刪除temporary關(guān)鍵字即可。輸入“selectstringJoin(‘thisis’,‘myudf’);”命令調(diào)用字符串連接函數(shù),結(jié)果如圖所示。編寫Hive中的UDF
任務(wù)實現(xiàn)會員卡號觀測窗口的結(jié)束時間入會時間入會時長/天549932014-3-312006-11-22706280652014-3-312007-2-192597551062014-3-312007-2-12615211892014-3-312008-8-222047395462014-3-312009-4-1018166統(tǒng)計會員數(shù)最多的會員級別目錄查詢航空客戶信息表字段數(shù)據(jù)的最大值和最小值7編寫UDF統(tǒng)計用戶入會時長8構(gòu)建航空客戶價值分析的特征數(shù)據(jù)9為了讓讀者能夠綜合運用Hive的編程知識,同時了解數(shù)據(jù)分析中的數(shù)據(jù)預(yù)處理、模型特征構(gòu)建等關(guān)鍵流程。本小節(jié)的任務(wù)是結(jié)合航空客戶價值分析實例,使用Hive構(gòu)建航空客戶價值分析的特征數(shù)據(jù)。任務(wù)描述通過對數(shù)據(jù)觀察發(fā)現(xiàn)原始數(shù)據(jù)中存在票價為空值,票價最小值為0、平均折扣率大于0、總飛行公里數(shù)大于0的記錄。票價為空值的數(shù)據(jù)可能是客戶不存在乘機記錄造成,可以歸類為異常數(shù)據(jù)。票價最小值為0(免費)的數(shù)據(jù)可能是客戶乘坐0折機票或積分兌換的原因,該類數(shù)據(jù)可以歸類為無效數(shù)據(jù)。由于原始數(shù)據(jù)量大,無效、異常數(shù)據(jù)所占比例較小,對于數(shù)據(jù)整體影響不大,可以直接丟棄,具體處理方法如下。丟棄票價為空的記錄。丟棄票價為0、平均折扣率大于、總飛行公里數(shù)大于0的記錄。過濾異常數(shù)據(jù),即丟棄票價值為空值的記錄。過濾異常數(shù)據(jù)前后的記錄數(shù)統(tǒng)計結(jié)果如表所示,共過濾了689條異常數(shù)據(jù)。過濾無效、異常數(shù)據(jù)異常數(shù)據(jù)處理記錄數(shù)過濾異常數(shù)據(jù)前的記錄數(shù)62988過濾異常數(shù)據(jù)后的記錄數(shù)62299過濾無效數(shù)據(jù),即丟棄票價為0、平均折扣率大于0、總飛行公里數(shù)大于0的記錄,過濾無效數(shù)據(jù)前后的記錄數(shù)統(tǒng)計結(jié)果如表所示,共過濾了259條異常數(shù)據(jù)。過濾無效異常數(shù)據(jù)后的航空客戶信息表air_data_clear_2,保留了票價非0非空的,平均折扣率大于0且總飛行公里數(shù)大于0的記錄,后續(xù)將以此信息表為基礎(chǔ),構(gòu)建航空價值分析的特征數(shù)據(jù)。過濾無效、異常數(shù)據(jù)異常數(shù)據(jù)處理記錄數(shù)過濾異常數(shù)據(jù)前的記錄數(shù)62299過濾異常數(shù)據(jù)后的記錄數(shù)62040客戶價值分析,即通過航空公司客戶數(shù)據(jù)識別不同價值的客戶,識別客戶價值應(yīng)用最廣泛的模型是RFM模型。在RFM模型中。R(Recency)表示消費時間間隔。F(Frequency)表示消費頻率。M(Monetary)表示消費金額。綜合考慮實際情況以及數(shù)據(jù)集現(xiàn)有的信息,選擇客戶在一定時間內(nèi)累積的飛行里程M和客戶在一定時間內(nèi)乘坐艙位所對應(yīng)的折扣系數(shù)的平均值這C兩個字段代替消費金額。航空公司會員入會時間的長短在一定程度上能夠影響客戶價值,因此在模型中增加客戶關(guān)系長度L,作為區(qū)分客戶的另一特征。選取有效字段選取客戶關(guān)系長度L,消費時間間隔R,消費頻率F,飛行里程M和折扣系數(shù)的平均值C共5個特征作為航空公司識別客戶價值的特征,如表所示,記為LRFMC模型。根據(jù)航空公司客戶價值LRFMC模型,選擇與LRFMC特征相關(guān)的6個字段:FFP_DATE,LOAD_TIME,F(xiàn)LIGHT_COUNT,AVG_DISCOUNT,SEG_KM_SUM,LAST_TO_END。刪除其他字段,如會員卡號,性別,工作地城市,工作地所在省份,工作地所在國家,年齡等字段。選取有效字段LRFMC會員入會時長客戶最近一次乘坐公司飛機距觀測窗口結(jié)束的月數(shù)客戶在觀測窗口內(nèi)乘坐公司飛機的次數(shù)客戶在觀測窗口內(nèi)累計的飛行里程客戶在觀測窗口內(nèi)乘坐艙位所對應(yīng)的折扣系數(shù)的平均值
構(gòu)建模型指標(biāo)
構(gòu)建模型指標(biāo)LRFMC270612105807170.9616390429999999259771402936781.252314442615111352837121.254675516204797232813361.090869565181651523099280.970657895本章首先介紹了Hive數(shù)據(jù)倉庫的起源、特點及框架原理。其次,介紹了Hive的安裝配置流程。接著通過航空公司客戶分析案例,詳細介紹了Hive的基礎(chǔ)數(shù)據(jù)類型、內(nèi)置函數(shù)和Hive自定義函數(shù)UDF等基礎(chǔ)操作,最后使用Hive構(gòu)建出航空客戶價值分析的特征數(shù)據(jù),使讀者對Hive的編程知識有更加深刻的理解。小結(jié)
列存儲數(shù)據(jù)庫——HBase目前有一份經(jīng)過脫敏后的鈔票存取記錄的文件stumer_in_out_details.txt,共約100萬條數(shù)據(jù)。示例數(shù)據(jù)如圖。鈔票的存取記錄是解決銀行涉假幣糾紛的舉證和責(zé)任認定問題的重要憑證之一,因此,銀行對冠字號查詢系統(tǒng)提出以下兩個需求。支持保存至少3個月的全行數(shù)據(jù)。在已存儲100億條記錄的情況下,插入性能高于10000條/秒,并且精確查詢時間小于1秒。項目描述項目背景鈔票的存取記錄是解決銀行涉假幣糾紛的舉證和責(zé)任認定問題的重要憑證之一,因此,銀行對冠字號查詢系統(tǒng)提出以下兩個需求。支持保存至少3個月的全行數(shù)據(jù)。在已存儲100億條記錄的情況下,插入性能高于10000條/秒,并且精確查詢時間小于1秒。鑒于銀行的需求,為了保證較高的處理效率與靈活性,選用能夠滿足低延遲、每秒百萬級查詢的HBase作為冠字號查詢系統(tǒng)的存儲數(shù)據(jù)庫。本項目將對HBase的基礎(chǔ)知識與原理架構(gòu)進行介紹,接著介紹HBase集群的搭建過程,并結(jié)合冠字號查詢系統(tǒng)實例,詳細介紹HBaseShell基礎(chǔ)語法和HBaseJavaAPI基礎(chǔ)語法的使用。項目描述項目目標(biāo)學(xué)習(xí)HBase架構(gòu)、數(shù)據(jù)模型和HBase集群搭建過程,并根據(jù)冠字號查詢系統(tǒng)的業(yè)務(wù)需求安裝配置HBase集群。了解HBase表設(shè)計原則,學(xué)習(xí)HBase表的創(chuàng)建與管理操作,根據(jù)鈔票交易數(shù)據(jù)設(shè)計HBase表結(jié)構(gòu)。學(xué)習(xí)HBaseShell命令,插入部分鈔票交易數(shù)據(jù)至HBase表中,并對鈔票交易數(shù)據(jù)進行基礎(chǔ)探索,了解鈔票數(shù)據(jù)的結(jié)構(gòu)特征。學(xué)習(xí)HBaseJavaAPI基本操作,根據(jù)鈔票交易數(shù)據(jù)設(shè)計并編寫HBase表,導(dǎo)入全部鈔票交易數(shù)據(jù)至HBase表中,并實現(xiàn)鈔票表數(shù)據(jù)的檢索查詢。項目描述項目分析1安裝HBase集群目錄認識HBase2設(shè)計與新建鈔票交易數(shù)據(jù)表3新增與刪除鈔票刪除鈔票表表數(shù)據(jù)4查詢指定時間版本的鈔票數(shù)據(jù)5HBase是目前非常熱門的一款分布式非結(jié)構(gòu)化數(shù)據(jù)庫,無論是在互聯(lián)網(wǎng)行業(yè)還是其他傳統(tǒng)IT行業(yè)都得到了廣泛的應(yīng)用。近幾年隨著國內(nèi)大數(shù)據(jù)理念的普及,HBase憑借其高可靠、易擴展、高性能以及成熟的社區(qū)支持,受到越來越多企業(yè)的青睞。了解HBase相關(guān)概念和發(fā)展歷史。HBase核心功能模塊的作用。HBase的特性以及與其他數(shù)據(jù)庫的區(qū)別。了解HBase任務(wù)描述HBase是一個高可靠、高性能、面向列、可伸縮的分布式非結(jié)構(gòu)化數(shù)據(jù)庫,主要用于存儲非結(jié)構(gòu)化和半結(jié)構(gòu)化的松散數(shù)據(jù)。HBase的目標(biāo)是處理數(shù)據(jù)量非常龐大的表,并且可以通過水平擴展的方式,利用廉價計算機集群處理由超過10億行數(shù)據(jù)和數(shù)百萬列元素組成的數(shù)據(jù)表。HBase被廣泛應(yīng)用于Facebook、Yahoo、阿里巴巴、小米、華為等公司的在線系統(tǒng)以及離線分析系統(tǒng)中。了解HBase1.HBase簡介HBase的誕生和發(fā)展,離不開Google發(fā)表的3篇論文:GFS、MapReduce和Bigtable。GFS:2003年,Google發(fā)表了一篇論文TheGoogleFileSystem。它使用商用硬件集群存儲海量數(shù)據(jù)。MapReduce:2004年,Google又發(fā)表了另一篇論文BigtableDataProcessingonLargeClusters。MapReduce能夠充分利用GFS集群中的每個商用服務(wù)器提供的大量CPU。Bigtable:2006年的論文Bigtable:ADistributedStorageSystemforStructuredData中發(fā)表了。Bigtable分布式數(shù)據(jù)庫可以在局部幾臺服務(wù)器崩潰的情況下繼續(xù)提供高性能的服務(wù)。2007年,Powerset公司的工作人員基于Bigtable的論文研發(fā)了Bigtable的Java開源版本,即HBase。了解HBase2.HBase的發(fā)展歷程HBase作為列存儲非關(guān)系型數(shù)據(jù)庫,具有以下幾個特點。容量巨大。HBase的單表可以支持千億行、百萬列的數(shù)據(jù)規(guī)模,數(shù)據(jù)容量可以達到TB甚至PB級別。良好的可擴展。HBase集群可以非常方便地實現(xiàn)集群容量擴展,主要包括數(shù)據(jù)存儲節(jié)點擴展以及讀寫服務(wù)節(jié)點擴展。稀疏性。HBase支持大量稀疏存儲,即允許大量列值為空,并不占用任何存儲空間。高性能。HBase目前主要擅長于OLTP場景,數(shù)據(jù)寫操作性能強勁。多版本。HBase支持多版本特性。支持過期。HBase支持TTL過期特性,用戶只需要設(shè)置過期時間,超過TTL的數(shù)據(jù)就會被自動清理。Hadoop原生支持。Base是Hadoop生態(tài)中的核心成員之一,很多生態(tài)組件都可以與其直接對接。了解HBase3.HBase的特點HBase與傳統(tǒng)數(shù)據(jù)庫RDBMS的區(qū)別了解HBase對比項HBaseRDBMS硬件集群商用硬件較貴的多處理器硬件容錯單個或少個節(jié)點宕機對HBase沒有影響需要額外較復(fù)雜的配置數(shù)據(jù)大小TB到PB級數(shù)據(jù),千萬到十億行GB到TB級數(shù)據(jù),十萬到百萬行數(shù)據(jù)層一個分布式、多維度的、排序的Map行或列導(dǎo)向數(shù)據(jù)類型只有Bytes
多種數(shù)據(jù)類型支持事務(wù)單個行的ACID支持表間和行間的ACID查詢語言支持自身提供的APISQL索引Rowley索引支持吞吐量每秒百萬查詢每秒千次查詢HBase與Hive的區(qū)別了解HBase對比項HBaseHive延遲性在線,低延遲批處理,較高延遲結(jié)構(gòu)化非結(jié)構(gòu)化數(shù)據(jù)結(jié)構(gòu)化數(shù)據(jù)適用人員程序員分析人員適用場景海量明細數(shù)據(jù)的隨機實時查詢,如日志明細、交易清單、軌跡行為等離線的批量數(shù)據(jù)計算HBase和Hive在大數(shù)據(jù)架構(gòu)中處在不同位置,HBase主要解決實時數(shù)據(jù)查詢問題,Hive主要解決數(shù)據(jù)處理和計算問題。對象存儲:存儲新聞、網(wǎng)頁、圖片、視頻、病毒等文件。時序數(shù)據(jù):HBase有一個OpenTSDB模塊,可以滿足時序類場景的高并發(fā)和海量儲存的需求。推薦畫像:特別是用戶的畫像,是一個比較大的稀疏矩陣,可以使用HBase進行存儲。時空數(shù)據(jù):主要是軌跡、氣象網(wǎng)格的數(shù)據(jù)。CubedOLAP:Kylin的一個分析構(gòu)建cube模型的工具。消息/訂單:在電信領(lǐng)域、銀行領(lǐng)域,大多數(shù)訂單查詢的底層存儲使用的均為HBase。Feeds流:HBase可以作為Feeds流(持續(xù)更新并呈現(xiàn)給用戶內(nèi)容的信息流)的高并發(fā)請求訪問應(yīng)用。NewSQL:HBase之上有Phoenix插件,可以滿足二級索引、執(zhí)行標(biāo)準(zhǔn)SQL的需求。了解HBase4.HBase的應(yīng)用場景HBase的整體架構(gòu)如下圖。HBase數(shù)據(jù)庫主要由客戶端Client、協(xié)調(diào)服務(wù)模塊Zookeeper、主節(jié)點服務(wù)Master、從節(jié)點服務(wù)Reinsurer和數(shù)據(jù)表分片Region共5個核心功能模塊組成。掌握HBase核心功能模塊HBase客戶端(Client)提供了四種接口。Shell命令行接口。原生JavaAPI編程接口。Thrift/RESTAPI編程接口。MapReduce編程接口。HBase客戶端支持所有常見的DML操作以及DDL操作,即數(shù)據(jù)的增刪改查和表的日常維護等。對于管理類操作,Client通過RPC機制與HMaster進行通信,對于數(shù)據(jù)讀寫類操作,Client通過RPC機制與HRegionserver進行通信。掌握HBase核心功能模塊1.客戶端ClientZookeeper是Hadoop的分布式協(xié)調(diào)服務(wù),也是ApacheHadoop的一個項目。在HBase系統(tǒng)中,Zookeeper扮演著非常重要的角色,主要功能有以下幾點。管理系統(tǒng)核心源數(shù)據(jù)。Zookeeper存儲HBase中的-ROOT-表和.META.表的地址,客戶端訪問數(shù)據(jù)必須通過這兩個表。監(jiān)控HRegionserver。HRegionserver把自己以Ephedral方式注冊到Zookeeper中,HMaster隨時感知各個HRegionserver的健康狀態(tài)。實現(xiàn)HMater的高可用。Zookeeper在保證集群只有一個ActiveHMaster正常工作的同時,還會啟動一個StandyHMaster同步ActiveHMaster的狀態(tài),當(dāng)ActiveHMaster宕機時,Zookeeper會完成主備切換的過程。實現(xiàn)分布式鎖。HBase中對一張表進行各種管理操作(如修改操作),需要先加表鎖,防止其他用戶對同一張表進行管理操作,造成表狀態(tài)不一致。掌握HBase核心功能模塊2.協(xié)調(diào)服務(wù)組件Zoo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國建筑技術(shù)集團2026屆校園招聘備考題庫及完整答案詳解一套
- 2025年鷹潭市月湖區(qū)衛(wèi)健委現(xiàn)面向社會公開招聘備考題庫附答案詳解
- 普洱市第一中學(xué)2026年度急需緊缺人才第二批招聘備考題庫附答案詳解
- 2025年江蘇新海連發(fā)展集團有限公司招聘備考題庫及參考答案詳解1套
- 微觀經(jīng)濟學(xué)試題及答案
- 2025年國婦嬰招聘備考題庫完整答案詳解
- 成都市龍泉驛區(qū)青臺山中學(xué)校2025年秋季教師招聘備考題庫及參考答案詳解1套
- 2025年北京腫瘤醫(yī)院社會人員公開招聘備考題庫有答案詳解
- 2025年開封市龍亭區(qū)柳園口鄉(xiāng)衛(wèi)生院需求招聘備考題庫有答案詳解
- 道德法治與醫(yī)患關(guān)系
- 全國自然教育中長期發(fā)展規(guī)劃
- 日本對杜仲的研究報告
- 前房積血的護理查房
- 馬克思主義的時代解讀學(xué)習(xí)通章節(jié)答案期末考試題庫2023年
- GB/T 42796-2023鋼筋機械連接件
- 福建永定紅花崗巖(礦區(qū))介紹
- 高中物理新課標(biāo)人教必修252平拋運動(帶動畫和投彈游戲)課件
- 化工農(nóng)藥制劑建設(shè)項目試生產(chǎn)方案備案資料
- HY/T 070-2022海域使用面積測量規(guī)范
- YS/T 724-2016多晶硅用硅粉
- GB/T 2624.2-2006用安裝在圓形截面管道中的差壓裝置測量滿管流體流量第2部分:孔板
評論
0/150
提交評論