Hive數(shù)據(jù)倉庫應用教程高職全套教學課件_第1頁
Hive數(shù)據(jù)倉庫應用教程高職全套教學課件_第2頁
Hive數(shù)據(jù)倉庫應用教程高職全套教學課件_第3頁
Hive數(shù)據(jù)倉庫應用教程高職全套教學課件_第4頁
Hive數(shù)據(jù)倉庫應用教程高職全套教學課件_第5頁
已閱讀5頁,還剩555頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

項目一認識Hive《Hive數(shù)據(jù)倉庫應用教程》項目1認識Hive.pptx項目2Hive環(huán)境搭建.pptx項目3Hive基本語法.pptx項目4Hive數(shù)據(jù)定義.pptx項目5數(shù)據(jù)的導入與導出.pptx項目6Hive數(shù)據(jù)查詢.pptx項目7Hive函數(shù).pptx項目8Hive優(yōu)化.pptx項目9綜合案例.pptx全套可編輯PPT課件目錄/CONTENTS任務1-1認識數(shù)據(jù)倉庫行業(yè)PPT模板/hangye/任務1-2認識Hive數(shù)據(jù)倉庫123項目小結163認識數(shù)據(jù)倉庫任務1-1《Hive數(shù)據(jù)倉庫應用教程》1.1.1任務描述本任務將帶領大家了解數(shù)據(jù)倉庫的概念,包括數(shù)據(jù)倉庫的特點、數(shù)據(jù)模型以及體系結構。通過與傳統(tǒng)數(shù)據(jù)庫進行對比,讓大家了解數(shù)據(jù)倉庫相較于傳統(tǒng)數(shù)據(jù)庫的優(yōu)勢。1.1.2任務準備知識1.數(shù)據(jù)庫概述(1)什么是數(shù)據(jù)庫?(2)數(shù)據(jù)庫的組成(3)數(shù)據(jù)庫的作用結構化的數(shù)據(jù)集合存儲、檢索、查詢、管理數(shù)據(jù)的系統(tǒng)支持多種數(shù)據(jù)類型:文本、數(shù)字、圖片等數(shù)據(jù)庫模型:關系型、非關系型等數(shù)據(jù)庫架構:單層、兩層、三層架構數(shù)據(jù)和數(shù)據(jù)庫模式數(shù)據(jù)組織與管理提供信息存儲和檢索的高效方式支持應用程序和用戶決策1.1.2任務準備知識2.數(shù)據(jù)庫管理系統(tǒng)(DBMS)(1)DBMS的定義(2)DBMS的功能(3)DBMS的重要性軟件系統(tǒng),用于創(chuàng)建和管理數(shù)據(jù)庫提供數(shù)據(jù)的安全性、完整性、備份與恢復數(shù)據(jù)定義、更新、管理數(shù)據(jù)安全管理和訪問控制性能監(jiān)控和優(yōu)化保證數(shù)據(jù)一致性和完整性支持多用戶環(huán)境和并發(fā)控制提供數(shù)據(jù)獨立性和抽象化1.1.2任務準備知識3.傳統(tǒng)數(shù)據(jù)庫的局限性(1)面向業(yè)務過程的設計(2)分散的數(shù)據(jù)源問題(3)缺乏時間變化維度以日常業(yè)務操作為中心,不利于全局數(shù)據(jù)分析數(shù)據(jù)結構圍繞業(yè)務過程,限制數(shù)據(jù)的寬泛應用多個應用程序有各自的數(shù)據(jù)庫,導致數(shù)據(jù)孤立數(shù)據(jù)集成、標準化和一致性維護困難傳統(tǒng)數(shù)據(jù)庫關注當前狀態(tài),不記錄歷史變化歷史數(shù)據(jù)分析和趨勢預測能力不足1.1.2任務準備知識3.傳統(tǒng)數(shù)據(jù)庫的局限性(4)性能受限于復雜查詢:傳統(tǒng)數(shù)據(jù)庫設計優(yōu)化事務處理,不適合復雜分析(5)缺少元數(shù)據(jù)管理:傳統(tǒng)數(shù)據(jù)庫不提供元數(shù)據(jù)管理工具,影響數(shù)據(jù)理解和使用。(6)決策支持不足:傳統(tǒng)數(shù)據(jù)庫不適合需復雜數(shù)據(jù)分析和挖掘的決策支持和商業(yè)智能。1.1.3任務實施1.數(shù)據(jù)倉庫的概念數(shù)據(jù)倉庫是一種專為分析和決策支持設計的集中化數(shù)據(jù)存儲環(huán)境。它不同于傳統(tǒng)數(shù)據(jù)庫,因為它專注于數(shù)據(jù)的整合、歷史存儲和復雜查詢性能。數(shù)據(jù)倉庫整合來自多個業(yè)務系統(tǒng)的數(shù)據(jù),使用特定的數(shù)據(jù)模型如星型或雪花模型,并采用列式存儲等技術優(yōu)化分析性能。它還配備了嚴格的數(shù)據(jù)治理和安全措施以保證數(shù)據(jù)準確和合規(guī)。對用戶而言,數(shù)據(jù)倉庫提供了一個統(tǒng)一的視圖,支持高級數(shù)據(jù)探索和業(yè)務趨勢預測的分析工具。1.1.3任務實施2.數(shù)據(jù)倉庫的特點(1)面向主題:數(shù)據(jù)倉庫圍繞企業(yè)的關鍵主題(如客戶、銷售、庫存、財務等)來組織數(shù)據(jù),以便于進行跨領域的分析。(2)集成:它整合了來自企業(yè)內多個分散的操作型數(shù)據(jù)庫的數(shù)據(jù),提供了一個清潔、一致的全局視圖。(3)數(shù)據(jù)穩(wěn)定性:數(shù)據(jù)倉庫中的數(shù)據(jù)相對穩(wěn)定,更多用于查詢和分析,而不像操作型數(shù)據(jù)庫那樣頻繁更新。(4)歷史變化:數(shù)據(jù)倉庫存儲數(shù)據(jù)的歷史狀態(tài),使得分析師可以執(zhí)行趨勢分析和預測分析。(5)高性能查詢:通過使用特定的存儲技術和查詢優(yōu)化,數(shù)據(jù)倉庫能夠高效處理大量數(shù)據(jù)的復雜查詢。1.1.3任務實施3.數(shù)據(jù)倉庫的數(shù)據(jù)模型數(shù)據(jù)倉庫的數(shù)據(jù)模型是按層次組織的,它定義了數(shù)據(jù)如何被組織、存儲和分析,主要分為三個層次:1.數(shù)據(jù)物理層:這是與數(shù)據(jù)的物理存儲和檢索機制直接相關的層級。它關注數(shù)據(jù)的物理存儲結構、編碼方式和存儲位置。2.概念數(shù)據(jù)層:這一層面向整體邏輯結構和關系,提供一個全局和抽象的視圖,描述數(shù)據(jù)實體、屬性和它們之間的關系。3.邏輯數(shù)據(jù)層:是用戶交互的層級,基于概念層設計,更聚焦于用戶的數(shù)據(jù)需求。它通過視圖、報表等形式,為用戶提供定制的數(shù)據(jù)展示和分析工具。1.1.3任務實施4.數(shù)據(jù)倉庫的體系結構數(shù)據(jù)倉庫的體系結構是支撐其高效運行和滿足各種數(shù)據(jù)需求的關鍵。一個典型的數(shù)據(jù)倉庫體系結構通常分為三個主要層次:源數(shù)據(jù)層、數(shù)據(jù)倉庫層和數(shù)據(jù)應用層。認識Hive數(shù)據(jù)倉庫任務1-2《Hive數(shù)據(jù)倉庫應用教程》1.1.1任務描述在當前的任務中,我們將深入探討Hive,這是一個基于Hadoop的數(shù)據(jù)倉庫工具。我們將詳細介紹Hive的架構、基本數(shù)據(jù)類型及其如何融入整個大數(shù)據(jù)生態(tài)系統(tǒng)。通過本次任務,讀者將更好地理解Hive的功能、優(yōu)點以及它在大規(guī)模數(shù)據(jù)處理和分析中的角色。1.1.2任務準備知識1.OLTP(聯(lián)機事務處理)OLTP是傳統(tǒng)的關系型數(shù)據(jù)庫的主要應用,如MySQL、Oracle和SQLServer。它主要處理基本的日常事務,如銀行交易、訂單處理等。OLTP系統(tǒng)的特點是高并發(fā)、小數(shù)據(jù)量的事務,要求快速的讀寫響應。2.OLAP(聯(lián)機分析處理)與OLTP不同,OLAP專注于數(shù)據(jù)倉庫系統(tǒng),支持復雜的分析操作,側重于決策支持。它處理的數(shù)據(jù)量通常很大,但查詢的并發(fā)性相對較低。OLAP系統(tǒng)通常為用戶提供直觀、易懂的查詢結果,幫助決策者進行趨勢分析、數(shù)據(jù)挖掘等操作。了解這兩者的區(qū)別對于理解Hive在大數(shù)據(jù)生態(tài)系統(tǒng)中的位置非常重要。Hive主要作為一個OLAP工具,允許用戶在Hadoop上進行復雜的數(shù)據(jù)分析。1.1.3任務實施1.Hive概述Hive是一個為處理大規(guī)模數(shù)據(jù)集而構建的數(shù)據(jù)倉庫工具,它專門為Hadoop生態(tài)系統(tǒng)開發(fā)。利用Hadoop的HDFS進行數(shù)據(jù)存儲,Hive允許分析和處理海量數(shù)據(jù),同時保持了高度的可擴展性和容錯能力。Hive支持表、列和數(shù)據(jù)類型的定義,但主要面向的是批量處理,而不是實時讀寫。它通過HiveQL——一種類SQL查詢語言,允許用戶執(zhí)行查詢操作,這些查詢被轉換成MapReduce作業(yè)以在Hadoop集群上運行。Hive的用戶自定義函數(shù)(UDF)功能增加了靈活性,使得用戶可以根據(jù)需要進行專門的數(shù)據(jù)分析。總的來說,Hive為在Hadoop上的大數(shù)據(jù)分析提供了一個強大、靈活且可擴展的數(shù)據(jù)倉庫解決方案。1.1.3任務實施2.Hive架構Hive作為一個構建在Hadoop上的數(shù)據(jù)倉庫工具,它的架構體現(xiàn)了如何處理、存儲和查詢大規(guī)模數(shù)據(jù)集。以下是Hive架構的主要組件及其功能的詳細描述。1.1.3任務實施3.Hive數(shù)據(jù)類型Hive支持多種數(shù)據(jù)類型,以滿足各種數(shù)據(jù)存儲和查詢需求。這些數(shù)據(jù)類型可以分為兩大類:基本數(shù)據(jù)類型和集合數(shù)據(jù)類型。Hive數(shù)據(jù)類型Java數(shù)據(jù)類型長度例子TINYINTbyte1byte有符號整數(shù)20SMALINTshort2byte有符號整數(shù)20INTint4byte有符號整數(shù)20BIGINTlong8byte有符號整數(shù)20BOOLEANboolean布爾類型,true或者falseTRUEFALSEFLOATfloat單精度浮點數(shù)3.14159DOUBLEdouble雙精度浮點數(shù)3.14159STRINGstring字符系列??梢灾付ㄗ址?。可以使用單引號或者雙引號。‘nowisthetime’“forallgoodmen”TIMESTAMP

時間類型2022-10-25BINARY

字節(jié)數(shù)組基本數(shù)據(jù)類型1.1.3任務實施數(shù)據(jù)類型描述語法示例STRUCT和c語言中的struct類似,都可以通過“點”符號訪問元素內容。例如,如果某個列的數(shù)據(jù)類型是STRUCT{firstSTRING,lastSTRING},那么第1個元素可以通過字段.first來引用。struct()MAPMAP是一組鍵-值對元組集合,使用數(shù)組表示法可以訪問數(shù)據(jù)。例如,如果某個列的數(shù)據(jù)類型是MAP,其中鍵->值對是’first’->’John’和’last’->’Doe’,那么可以通過字段名[‘last’]獲取最后一個元素map()ARRAY數(shù)組是一組具有相同類型和名稱的變量的集合。這些變量稱為數(shù)組的元素,每個數(shù)組元素都有一個編號,編號從零開始。例如,數(shù)組值為[‘John’,‘Doe’],那么第2個元素可以通過數(shù)組名[1]進行引用。Array()集合數(shù)據(jù)類型項目小結《Hive數(shù)據(jù)倉庫應用教程》項目小結我們在項目中首先學習了數(shù)據(jù)庫、數(shù)據(jù)倉庫的概念,其中重點介紹了數(shù)據(jù)倉庫的特點和數(shù)據(jù)倉庫的數(shù)據(jù)模型以及數(shù)據(jù)倉庫的體系結構,其次進一步學習了Hive數(shù)據(jù)倉庫的基本概念,詳細介紹了Hive的架構和Hive的數(shù)據(jù)類型。在本項目中,不僅理解和掌握數(shù)據(jù)倉庫的基本概念和特點,同時也認識了Hive的基本概念和架構,是后續(xù)應用Hive解決實際問題的重要基礎。課后練習1.簡述數(shù)據(jù)倉庫特點?2.簡述Hive架構主要組件和功能?感謝您的觀看《Hive數(shù)據(jù)倉庫應用教程》項目二Hive環(huán)境搭建《Hive數(shù)據(jù)倉庫應用教程》目錄/CONTENTS任務2-1Linux環(huán)境搭建行業(yè)PPT模板/hangye/任務2-2Hadoop環(huán)境搭建123任務2-3Hive環(huán)境搭建Linux環(huán)境搭建任務2-1《Hive數(shù)據(jù)倉庫應用教程》2.1.1任務描述本任務將學會如何使用虛擬機工具軟件VMwareWorkstation來創(chuàng)建、克隆和啟動Linux系統(tǒng),同時在虛擬機中對Linux系統(tǒng)的網絡、主機名等進行設置,為后續(xù)Hadoop和Hive的部署打下基礎。2.1.2任務準備知識LinuxLinux全稱GNU/Linux,是一套免費使用和自由傳播的類Unix操作系統(tǒng),是多用戶、多任務、支持多線程和多CPU的操作系統(tǒng)。伴隨著互聯(lián)網的發(fā)展,Linux得到了來自全世界軟件愛好者、組織、公司的支持。它除了在服務器方面保持著強勁的發(fā)展勢頭以外,在個人電腦、嵌入式系統(tǒng)上都有著長足的進步。2.VMwareWorkstationVMwareWorkstation是一款功能強大的桌面虛擬計算機軟件,提供用戶可在單一的桌面上同時運行不同的操作系統(tǒng),和進行開發(fā)、測試、部署新的應用程序的最佳解決方案。2.1.3任務實施1.虛擬機的安裝與創(chuàng)建步驟1:單擊圖2-2中的【創(chuàng)建新的虛擬機】選項,打開【新建虛擬機向導】對話框,選擇【自定義(高級)】選項,然后單擊【下一步】按鈕,如圖2-3所示。圖2-2圖2-32.1.3任務實施1.虛擬機的安裝與創(chuàng)建步驟2:選擇【稍后安裝操作系統(tǒng)】,然后單擊【下一步】按鈕,如圖2-4所示。步驟3:選擇Linux,版本下拉選擇【CentOS764位】,然后單擊【下一步】按鈕,如圖2-5所示圖2-4圖2-52.1.3任務實施1.虛擬機的安裝與創(chuàng)建步驟4:填寫虛擬機名node1,選擇虛擬機文件的位置,然后單擊【下一步】按鈕,如圖2-6所示。步驟5:選擇處理器數(shù)量為1,每個處理的內核數(shù)量為2,然后單擊【下一步】按鈕,如圖2-7所示。圖2-6圖2-72.1.3任務實施1.虛擬機的安裝與創(chuàng)建步驟6:根據(jù)自身電腦硬件配置情況,設置內存為2048MB,也即是2GB,然后單擊【下一步】按鈕,如圖2-8所示步驟7:選擇【使用網絡地址轉換(NAT)】選項,然后單擊【下一步】按鈕,如圖2-9所示。圖2-8圖2-92.1.3任務實施1.虛擬機的安裝與創(chuàng)建步驟8:選擇默認的【LSILogic(L)】選項,然后單擊【下一步】按鈕,如圖2-10所示。步驟9:此處選擇默認的【SCSI(S)】選項,然后單擊【下一步】按鈕,如圖2-11示。圖2-10圖2-112.1.3任務實施1.虛擬機的安裝與創(chuàng)建步驟10:選擇默認的【創(chuàng)建新虛擬磁盤】選項,然后單擊【下一步】按鈕,如圖2-12所示。。步驟11:設置最大磁盤大小為20GB,然后單擊【下一步】按鈕,如圖2-13所示。圖2-12圖2-132.1.3任務實施1.虛擬機的安裝與創(chuàng)建步驟12:設置磁盤文件名為node1.vmdk,然后單擊【下一步】按鈕,如圖2-14所示。步驟13:打開【已準備好創(chuàng)建虛擬機】對話框,確認無誤后單擊【完成】按鈕,如圖2-15所示。圖2-14圖2-152.1.3任務實施1.虛擬機的安裝與創(chuàng)建步驟14:最終完成新建虛擬機的創(chuàng)建,并在VMWare主頁右側打開node1選項卡,其中顯示node1虛擬機的配置情況,同時在左側【我的計算機】下出現(xiàn)node1菜單選項,如圖2-16所示。圖2-162.1.3任務實施2.Linux安裝步驟1:在上圖2-16中點擊【編輯選項卡設置】,選擇本機Linux的鏡像文件,單擊【確定】按鈕,如圖2-17所示。步驟2:VMWare重新回到了如圖2-16的界面,此時選擇【開啟此虛擬機】,進入安裝界面,選擇【InstallCentOS7】,按鍵盤回車鍵,開始在虛擬機中安裝Linux,如圖2-18所示。圖2-17圖2-182.1.3任務實施2.Linux安裝步驟3:選擇語言為默認的English(UnitedStates),然后點擊繼續(xù)【Continue】按鈕,如圖2-19所示步驟4:設置時間與時區(qū),點擊【DATE&TIME】,如圖2-20所示。。圖2-19圖2-202.1.3任務實施2.Linux安裝接步驟4,打開時間與時區(qū)界面【DATE&TIME】,選擇區(qū)域為亞洲【Asia】,城市為上?!維hanghai】,同時可以設置時間與日期,完成設置后點擊完成按鈕【Done】,如圖2-21。步驟5:回到如圖2-20的安裝概覽界面,選擇并打開【SOFTWARESELECTION】界面,選擇默認的最小化安裝【MinimalInstall】,完成設置后點擊完成按鈕【Done】,如圖2-22所示。圖2-21圖2-222.1.3任務實施2.Linux安裝步驟6:回到如圖2-20的安裝概覽界面,選擇并打開【INSTALLDESTINATION】界面,選擇默認的自動配置分區(qū)【Automaticallyconfigurepartitioning】,然后點擊【Done】,如圖2-23所示。步驟7:回到如圖2-20的安裝概覽界面,選擇并打開【NETWORK&HOSTNAME】界面,開啟網絡為【ON】狀態(tài),設置主機名為【node1】,點擊【Apply】按鈕,完成設置后點擊完成按鈕【Done】,如圖2-24所示。圖2-23圖2-242.1.3任務實施2.Linux安裝步驟8:完成配置后點擊開始安裝按鈕【BeginInstallation】,如圖2-25所示。步驟9:安裝過程中設置root密碼,點擊【ROOTPASSWORD】,如圖2-26所示。圖2-25圖2-262.1.3任務實施2.Linux安裝接步驟9,設置密碼123456,以及相同的確認密碼,設置后點擊【Done】,如圖2-27所示。步驟10:安裝完成后在【CONFIGURATION】界面中點擊【Reboot】按鈕,將重啟Linux系統(tǒng),如圖2-28所示圖2-27圖2-282.1.3任務實施2.Linux安裝步驟11:重啟Linux系統(tǒng)后輸入用戶名root和密碼123456,出現(xiàn)Linux的提示符[root@node1~]#,如圖2-29所示,安裝Linux成功。圖2-292.1.3任務實施3.Linux克隆步驟1:在如圖選中的node1,快捷鍵【Ctrl+E】關閉虛擬機,點擊【關機】在如圖2-30所示,步驟2:右鍵node1虛擬機,彈出快捷菜單,選擇【管理】

【克隆】菜單,在如圖2-31所示,圖2-30圖2-312.1.3任務實施3.Linux克隆接步驟2,

彈出克隆虛擬機向導界面,如圖2-32所示,點擊【下一頁】按鈕。步驟3:步驟3:在克隆源頁面選擇【虛擬機中的當前狀態(tài)(C)】,如圖2-33所示圖2-32圖2-332.1.3任務實施3.Linux克隆步驟4:在克隆類型頁面選擇【創(chuàng)建完整克隆(F)】,然后點擊【下一頁】按鈕,如圖2-34所示。步驟5:填寫虛擬機名稱為【node2】,位置填寫【D:\node2】,點擊【完成】按鈕,如圖3-35。圖2-34圖2-352.1.3任務實施3.Linux克隆步驟6:用同樣的方法,重復上述步驟,即可完成node3虛擬機的創(chuàng)建,最終三臺虛擬機創(chuàng)建完成的情況如圖3-36所示。圖2-362.1.3任務實施4.Linux配置步驟1:修改主機名,啟動名為node2的虛擬機,輸入用戶名root和密碼123456登錄系統(tǒng),在Linux提示符輸入修改主機名的命令,然后在重啟虛擬機,以便設置的新主機名node2生效,具體命令如圖2-37所示。[root@node1~]#hostnamectlset-hostnamenode2[root@node1~]#reboot圖2-372.1.3任務實施4.Linux配置接步驟1,重啟node2虛擬機的主機名被修改成了node2,如圖2-38所示,用同樣的方法也把node3虛擬機的主機名改成node3.圖2-382.1.3任務實施4.Linux配置步驟2:修改網絡配置,啟動node2虛擬機,輸入查看網絡配置文件目錄的命令,具體如下[root@node2~]#ls/etc/sysconfig/network-scripts/在此目錄下可以看到網絡配置文件ifcfg-ens33,如圖2-39所示圖2-392.1.3任務實施4.Linux配置使用vi編輯命令修改網絡配置文件,具體命令如下,如圖2-40所示。[root@node2~]#vi/etc/sysconfig/network-scripts/ifcfg-ens33圖2-402.1.3任務實施4.Linux配置使用vi編輯命令修改網絡配置文件,修改完保存配置并退出vi編輯器,網絡配置如圖2-41所示。圖2-412.1.3任務實施4.Linux配置由于node2是完全克隆node1、網絡配置中的UUID也完全相同,UUID是虛擬機的唯一標識碼,通過命令來重新生成UUID,具體命令如下:[root@node2~]#sed-i'/UUID=/c\UUID='`uuidgen`''/etc/sysconfig/network-scripts/ifcfg-ens33注意區(qū)分上述命令中的單引號“'”與反引號“`'”。完成上述node2的網絡設置與UUID的重生成后一定要執(zhí)行servicenetworkrestart命令,使其生效。使用同樣的方法設置node1的ip為28,node3的ip為30,其他網絡配置相同,同時也將node3的UUID重生成。2.1.3任務實施5.Xshell連接Linux虛擬機步驟1:打開Xshell工作窗口,點擊【文件】

【新建會話屬性】菜單,打開如圖【新建會話屬性】窗口,在名稱處輸入【node1】,主機輸入【28】,然后點擊【確定】按鈕,如圖所示。步驟2:新建連接后,打開【會話】窗口,選中node1,點擊【連接】按鈕,如圖43所示。圖2-42圖2-432.1.3任務實施5.Xshell連接Linux虛擬機步驟3:在打開【SSH用戶名】窗口中輸入用戶名root,勾選【記住用戶名】然后點擊【確定】按鈕。如圖2-44所示步驟4:在打開【SSH用戶身份驗證】窗口中輸入密碼123456,勾選【記住密碼】,如圖45所示圖2-44圖2-452.1.3任務實施5.Xshell連接Linux虛擬機用同樣的方法新建node2、node3連接,最終Xshell連接三臺虛擬機的效果如圖2-46、圖2-47、圖2-48所示,后面就可以通過Xshell來連接虛擬機完成Hadoop、Hive等相關操作。圖2-46圖2-47圖2-48Hadoop環(huán)境搭建任務2-2《Hive數(shù)據(jù)倉庫應用教程》2.2.1任務描述Hive數(shù)據(jù)倉庫底層的數(shù)據(jù)存儲依賴的是Hadoop平臺的分布式文件系統(tǒng)(HDFS)。因此在搭建Hive之前需要先部署Hadoop環(huán)境,本任務將學會如何搭建全分布式Hadoop環(huán)境,為后續(xù)搭建Hive數(shù)據(jù)倉庫打好基礎。2.2.2任務準備知識Hadoop搭建有三種模式,分別為單機模式、偽分布模式、全分布模式。單機(本地)模式:這種模式在一臺單機上運行,沒有分布式文件系統(tǒng),而是直接讀寫本地操作系統(tǒng)的文件系統(tǒng)。偽分布式模式:也是在一臺單機上運行,但用不同的Java進程模仿分布式運行中的各類結點全分布式模式:全分布模式通常被用于生產環(huán)境,使用n臺主機組成一個Hadoop集群,Hadoop守護進程運行在每臺主機之上2.2.3任務實施1.準備工作步驟1:配置主機名與IP的映射,修改node1的/etc/hosts文件,命令如下:[root@node1~]#vi/etc/hosts在文件末尾添加如圖2-49內容,然后保存退出。node2、node3都做同樣的修改。圖2-492.2.3任務實施1.準備工作步驟2:SSH免密登錄,在完全分布式模式下,集群內任意一臺主機可免密登錄集群內所有主機,即實現(xiàn)了兩兩免密登錄。以node1免密登錄集群內其他所有主機為例進行操作。1.在node1生成密鑰對,使用“ssh-keygen-trsa”命令生成密鑰對,其中rsa表示加密算法,鍵入上面一條命令后連續(xù)敲擊四次回車鍵,如圖2-50所示:在/root/.ssh目錄下生成公鑰(id_rsa.pub)和私鑰(id_rsa),可通過命令“l(fā)s/root/.ssh”查看,如圖2-51所示。圖2-50圖2-512.2.3任務實施1.準備工作接步驟2,2.將node1公鑰id_rsa.pub復制到node1、node2和node3主機上,使用“ssh-copy-id”命令來復制公鑰,命令如下,[root@node1~]#ssh-copy-idnode1[root@node1~]#ssh-copy-idnode2[root@node1~]#ssh-copy-idnode3執(zhí)行命令過程中會提示輸入密碼,此處密碼都為123456。3.驗證免密登錄,在nodel主機輸入“sshnode2”、“sshnode2”命令驗證,驗證結果如圖2-52所示。圖2-522.1.3任務實施2.安裝JDK步驟1:解壓JDK,在node1使用mkdir命令創(chuàng)建/tools目錄,使用Xftp新建連接node1的會話,如圖2-53所示。將本機事先從Oracal官網下載的jdk-8u221-linux-x64.tar上傳到node1的tools目錄下,如圖2-54所示:圖2-53圖2-542.1.3任務實施2.安裝JDK將當前目錄切換到/tools目錄,可以通過ls命令查看通過Xftp上傳的到/tool目錄下的jdk安裝包,然后使用tar命令將jdk安裝包解壓到tools文件內,如圖2-55所示:使用mv命令將jdk1.8.0_221安裝目錄重命名,以便后面進行配置的時候更加簡潔,重命名如圖2-56所示圖2-55圖2-562.1.3任務實施2.安裝JDK步驟2:配置環(huán)境變量,使用vi/etc/profile命令編輯系統(tǒng)的環(huán)境變量文件,在文件尾部添加如下內容,如圖2-57所示。exportJAVA_HOME=/tools/jdkexportPATH=$PATH:$JAVA_HOME/binexportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar圖2-57圖2-58配置環(huán)境變量后記住一定要使用source/etc/profile命令使得配置生效,然后使用java-version命令驗證JDK環(huán)境是否配置成功,如圖2-58所示2.1.3任務實施2.安裝JDK步驟3:遠程拷貝JDK與配置文件,使用scp命令將node1的JDK安裝包與配置文件遠程拷貝到node2與node3虛擬機里,拷貝前在node2、node3虛擬機的根目錄下新建tools目錄,命令如下:[root@node1/]#scp-r/tools/jdk/root@node2:/tools[root@node1/]#scp-r/tools/jdk/root@node3:/tools遠程拷貝配置文件的命令如下:[root@node1/]#scp/etc/profileroot@node2:/etc/profile[root@node1/]#scp/etc/profileroot@node3:/etc/profile配置文件拷貝后一定要使用source/etc/profile命令使配置在node2、node3虛擬機生效,同時再使用java-version命令驗證一下JDK是否安裝成功。2.1.3任務實施3.部署Hadoop(完全分布模式)步驟1:將事先下載的Hadoop安裝包hadoop-2.7.4.tar.gz使用Xftp工具上傳到node1的tools目錄下,如圖2-59所示.在node1中將當前目錄切換到/tools目錄,可以通過ls命令查看通過Xftp上傳的到/tool目錄下的Hadoop安裝包,然后使用tar命令將Hadoop安裝包解壓到tools文件夾內,如圖2-60所示:圖2-59圖2-602.1.3任務實施3.部署Hadoop(完全分布模式)接步驟1,使用mv命令將hadoop-2.7.4安裝目錄重命名為hadoop,以便后面進行配置的時候更加簡潔,重命名如圖2-61所示步驟2:配置Hadoop用vi/etc/profile命令編輯系統(tǒng)的環(huán)境變量文件,在文件尾部添加如下內容,如圖2-62所示。exportHADOOP_HOME=/tools/hadoopexportPATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin圖2-61圖2-622.1.3任務實施3.部署Hadoop(完全分布模式)接步驟2,配置環(huán)境變量后記住一定要使用source/etc/profile命令使得配置生效,同時使用hadoopversion命名驗證Hadoop環(huán)境是否配置成功,如圖2-63所示圖2-632.1.3任務實施3.部署Hadoop(完全分布模式)步驟3:配置Hadoop集群1.編輯hadoop-env.sh文件用Xshell連接node1,hadoop-env.sh在hadoop安裝目錄的etc/hadoop目錄下,用vi命令編輯hadoop-env.sh,指定Hadoop運行的Java環(huán)境變量,將JAVA_HOME設置為node1中JDK的安裝路徑,如圖2-64所示。圖2-642.1.3任務實施3.部署Hadoop(完全分布模式)步驟3:配置Hadoop集群2.編輯yarn-env.sh文件yarn-env.sh在hadoop安裝目錄的etc/hadoop目錄下,用vi命令編輯yarn-env.sh,指定Yarn運行的Java環(huán)境變量,將JAVA_HOME設置為node1中JDK的安裝路徑,如圖2-65所示圖2-652.1.3任務實施3.部署Hadoop(完全分布模式)步驟3:配置Hadoop集群3.編輯core-site.xml文件core-site.xml在hadoop安裝目錄的etc/hadoop目錄下,是Hadoop的核心配置文件,用vi命令編輯core-site.xml,指定namenode的地址在node1上,同時設置Hadoop的臨時目錄(事先使用mkdir命令在hadoop目錄下新建tmp目錄),在<configuration>標簽內添加內容如下,完成配置后如圖2-66所示。<property><name>fs.defaultFS</name><value>hdfs://node1:9000</value></property><property><name>hadoop.tmp.dir</name><value>/tools/hadoop/tmp</value></property>圖2-662.1.3任務實施3.部署Hadoop(完全分布模式)步驟3:配置Hadoop集群4.編輯hdfs-site.xml文件hdfs-site.xml在hadoop安裝目錄的etc/hadoop目錄下,是HDFS的核心配置文件,用vi命令編輯hdfs-site.xml,指定HDFS的數(shù)量,同時設置secondarynamenode所在主機的和端口,在<configuration>標簽內添加內容如下,完成配置后如圖2-67所示。

<property><name>dfs.replication</name><value>3</value></property><property><name>node.secondary.http-address</name><value>node2:50090</value></property>圖2-672.1.3任務實施3.部署Hadoop(完全分布模式)步驟3:配置Hadoop集群5.編輯mapred-site.xml文件在hadoop安裝目錄的etc/hadoop目錄下只有mapred-site.xml.template文件,使用cpmapred-site.xml.templatemapred-site.xml命令拷貝模板來新建mapred-site.xml文件,用vi命令編輯mapred-site.xml,指定MapReduce運行時的框架,這里指定在YARN上,默認在local,在<configuration>標簽內添加內容如下,完成配置后如圖6-68所示:<property><name></name><value>yarn</value></property>圖2-682.1.3任務實施3.部署Hadoop(完全分布模式)步驟3:配置Hadoop集群6.編輯yarn-site.xml文件yarn-site.xml在hadoop安裝目錄的etc/hadoop目錄下,用vi命令編輯yarn-site.xml,指定YARN集群的管理者(ResourceManager)的地址,在<configuration>標簽內添加內容如下,完成配置后如圖2-69所示:<property><name>yarn.resourcemanager.hostname</name><value>node1</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>圖2-692.1.3任務實施3.部署Hadoop(完全分布模式)步驟3:配置Hadoop集群7.編輯slaves文件slaves在hadoop安裝目錄的etc/hadoop目錄下,用vi命令編輯slaves,將文件中的localhost刪除,添加主節(jié)點和子節(jié)點的主機名稱,此處主節(jié)點為node1,子節(jié)點為node2和node3,完成配置后如圖2-70所示圖2-702.1.3任務實施3.部署Hadoop(完全分布模式)步驟3:配置Hadoop集群8.遠程拷貝Hadoop安裝包與配置文件使用scp命令將node1的Hadoop安裝包與配置文件遠程拷貝到node2與node3虛擬機里,遠程拷貝Hadoop安裝包的命令如下。[root@node1/]#scp-r/tools/hadoop/root@node2:/tools[root@node1/]#scp-r/tools/hadoop/root@node3:/tools遠程拷貝配置文件的命令如下:[root@node1/]#scp/etc/profileroot@node2:/etc/profile[root@node1/]#scp/etc/profileroot@node3:/etc/profile配置文件拷貝后一定要使用source/etc/profile命令使配置在node2、node3虛擬機生效。2.1.3任務實施3.部署Hadoop(完全分布模式)步驟4:主節(jié)點文件系統(tǒng)格式化,在node1上執(zhí)行hdfsnamenode–format命令,對主節(jié)點上的文件系統(tǒng)進行格式化,此命令只在初次啟動Hadoop的時候執(zhí)行,出現(xiàn)successfullyformatted信息則表明格式化成功,如圖2-71所示。圖2-712.1.3任務實施3.部署Hadoop(完全分布模式)步驟5:配置Hadoop集群使用start-dfs.sh命令啟動Hadoop集群的HDFS,node1和node2的NameNode,以及node1、node2和node3的DataNode都會被啟動。使用start-yarn.sh命令啟動Hadoop集群的Yarn,node1的ResourceManager和node1、node2和node3的NodeManager都會被啟動。兩個命令及其執(zhí)行結果如圖2-72所示圖2-722.1.3任務實施3.部署Hadoop(完全分布模式)步驟6:使用jps命令查看進程在node1、node2和node3上分別執(zhí)行jps命令,查看完全分布模式Hadoop集群是否啟動成功效果如圖2-73、圖2-74、圖2-75所示。圖2-73圖2-74圖2-752.1.3任務實施3.部署Hadoop(完全分布模式)步驟7:關閉防火墻默認情況下CentOS7是開啟防火墻的,在node1、node2和node3上分別執(zhí)行關閉防火墻服務和禁止防火墻開機啟動命令,如下所示[root@node1/]#systemctlstopfirewalld[root@node1/]#systemctldisablefirewalld步驟8:在Windows系統(tǒng)下,訪問28:50070,查看HDFS集群狀態(tài),如圖2-76所示圖2-762.1.3任務實施3.部署Hadoop(完全分布模式)步驟9:在Windows系統(tǒng)下,訪問28:8088,查看Yarn集群狀態(tài),如圖2-77所示圖2-77搭建Hive環(huán)境任務2-3《Hive數(shù)據(jù)倉庫應用教程》2.3.1任務描述Hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,用來進行數(shù)據(jù)的提取、轉化和加載,這是一種可以存儲、查詢和分析存儲在Hadoop中的大規(guī)模數(shù)據(jù)的機制。Hive數(shù)據(jù)倉庫工具能將結構化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供SQL查詢功能,能將SQL語句轉變成MapReduce任務來執(zhí)行。Hive十分適合對數(shù)據(jù)倉庫進行統(tǒng)計分析,本任務將學會Hive的三種部署模式的搭建過程,為后續(xù)Hive數(shù)據(jù)倉庫操作打好基礎。2.3.2任務準備知識Hive部署模式有內嵌模式、本地模式、遠程模式等3種,客戶端連接MetaStore元數(shù)據(jù)服務,MetaStore再去連接MySQL數(shù)據(jù)庫進行元數(shù)據(jù)存取。1.內嵌模式:使用內置的Derby數(shù)據(jù)庫來存儲元數(shù)據(jù),是默認的方式,解壓hive安裝包,執(zhí)行bin/hive啟動即可使用,但是一次只能一個客戶端連接,不支持多會話連接,元數(shù)據(jù)無法共享,一般適用于測試環(huán)境。2.本地模式:采用獨立的數(shù)據(jù)庫來存儲元數(shù)據(jù),支持MySQL、Postgres、Oracle等數(shù)據(jù)庫。MetaStore服務和Hive在同一個進程中啟動,無需單獨啟動MetaStore服務,支持本地多會話連接。3.遠程模式:遠程模式的MetaStore服務和Hive運行在不同的進程里,Hive客戶端通過遠程連接MetaStore服務獲取元數(shù)據(jù),遠程模式同樣使用獨立數(shù)據(jù)庫來存儲元數(shù)據(jù),并且支持遠程多會話連接。2.2.3任務實施1.內嵌模式的部署步驟1:步驟一:將本機事先下載的Hive安裝包apache-hive-2.3.9-bin.tar.gz使用Xftp工具上傳到node1的tools目錄下,如圖2-78所示,在node1中將當前目錄切換到/tools目錄,使用tar命令將Hive安裝包解壓到tools文件夾內,如圖2-79所示:圖2-78圖2-79使用mv命令將apache-hive-2.3.9-bin安裝目錄重命名為hive,以便后面進行配置的時候更加簡潔,重命名如圖2-80所示圖2-802.1.3任務實施1.內嵌模式的部署步驟2:啟動Hadoop,使用前述的start-dfs.sh和start-yarn.sh命令啟動Hadoop。步驟3:初始化Hive,啟動Hive之前需要初始化Hive內嵌的Derby數(shù)據(jù)庫,具體命令如下,運行結果顯示schmaToolcompleted表明初始化成功,如圖2-81所示[root@node1hive]#bin/schematool-initSchema-dbTypederby圖2-812.1.3任務實施1.內嵌模式的部署步驟4:啟動Hive,使用bin/hive命令在初始化的目錄啟動hive,運行成功后則顯示hive提示符,同時可以使用showdatabases命令查看hive數(shù)據(jù)庫,如果能查看到默認的hive數(shù)據(jù)庫default,表明內嵌模式的Hive部署成功,如圖2-82所示圖2-822.1.3任務實施2.本地模式的部署步驟1:安裝MySQL1.下載wget命令[root@node2/]#yum-yinstallwget2.在tools下創(chuàng)建mysql文件夾,同時切換到mysql目錄下[root@node2/]#mkdir-p/tools/mysql[root@node2/]#cd/tools/mysql3.下載官方mysql-rpm包[root@node2mysql]#wget-i-c/get/mysql57-community-release-el7-10.noarch.rpm4.安裝下載好的rpm包[root@node2mysql]#yum-yinstallmysql57-community-release-el7-10.noarch.rpm5.安裝mysql-server[root@node2mysql]#yum-yinstallmysql-community-server6.MySQLGPG密鑰已過期導致的安裝失敗,運行以下命令,以2022年為例[root@node2mysql]rpm--importhttps:///RPM-GPG-KEY-mysql-20222.1.3任務實施2.本地模式的部署步驟1:安裝MySQL7.再次安裝mysql-server,安裝成功則顯示“Complete!”,如圖2-83所示[root@node2mysql]#yum-yinstallmysql-community-server圖2-832.1.3任務實施2.本地模式的部署步驟1:安裝MySQL8.啟動mysql,并查看狀態(tài),啟動成功則顯示“active(running)”,如圖2-84所示[root@node2mysql]systemctlstartmysqld.service[root@node2mysql]servicemysqldstatus9.查看MySQL初始密碼,如圖2-85所示[root@node2mysql]grep'password'/var/log/mysqld.log圖2-84圖2-852.1.3任務實施2.本地模式的部署步驟1:安裝MySQL10.通過初始密碼登錄mysql,提示輸入的密碼為前面查看到的初始密碼,如圖2-86所示[root@node2mysql]mysql-uroot–p11.初始密碼復雜沒有規(guī)律,不便記憶,登錄后可以修改密碼,此處把密碼修改成了Hive@2022,如圖2-87所示[root@node2mysql]ALTERUSERUSER()IDENTIFIEDBY'Hive@2022';[root@node2mysql]FLUSHPRIVILEGES;圖2-86圖2-872.1.3任務實施2.本地模式的部署步驟2:上傳并安裝Hive到node2的tools目錄下,過程參看嵌入模式的步驟一步驟3:配置Hive,進入hive安裝目錄的conf目錄下,根據(jù)配置模板文件新建hive-env.sh[root@node2mysql]cdconf[root@node2conf]cphive-env.sh.templatehive-env.sh用vi命令編輯hive-env.sh,添加以下配置項,配置完結果如圖2-88所示exportHADOOP_HOME=/tools/hadoopexportHIVE_CONF_DIR=/tools/hive/confexportHIVE_AUX_JARS_PATH=/tools/hive/libexportJAVA_HOME=/tools/jdk圖2-882.1.3任務實施2.本地模式的部署步驟4:配置Hive,/tools/hive目錄下新建warehouse目錄和tmp目錄,然后在/tools/hive/conf目錄下用vi新建hive-site.xml并配置相關信息[root@node2hive]cdconf[root@node2conf]vihive-site.xml<?xmlversion="1.0"encoding="UTF-8"standalone="no"?><?xml-stylesheettype="text/xsl"href="configuration.xsl"?><configuration><!--配置Hive數(shù)據(jù)存儲在HDFS上的目錄--><property><name>hive.metastore.warehouse.dir</name><value>/tools/hive/warehouse</value></property>

<!--配置Hive在HDFS上的臨時目錄--><property><name>hive.exec.scratchdir</name><value>/tools/hive/tmp</value></property>

<!--配置Hive開啟本地模式-><property><name>hive.metastore.local</name><value>true</value></property>

<!--配置MySQL的連接字符串--><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&usessL=false</value></property>

<!--配置MySQL的連接驅動--><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property>

<!--配置登錄MySQL的用戶--><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property>

<!--配置登錄MySQL的密碼--><property><name>javax.jdo.option.ConnectionPassword</name><value>Hive@2022</value></property>

<!--配置在cli中是顯示表的列名--><property><name>hive.cli.print.header</name><value>true</value></property>

<!--配置在cli中是顯示當前數(shù)據(jù)庫名--><property><name>hive.cli.print.current.db</name><value>true</value></property>

<!--配置beeline訪問連接被拒絕問題-><property><name>hive.server2.enable.doAs</name><value>false</value></property></configuration>2.1.3任務實施2.本地模式的部署步驟5:用Xftp將JDBC連接MySQL的驅動包mysql-connector-java-5.1.49從本地上傳到node2虛擬機/tools/hive/lib目錄下面,如圖2-89所示步驟6:配置hive環(huán)境變量,使用vi/etc/profile命令編輯系統(tǒng)的環(huán)境變量文件,在文件尾部添加如下內容,如圖2-90exportHIVE_HOME=/tools/hiveexportPATH=$PATH:$HIVE_HOME/bin圖2-89圖2-90配置環(huán)境變量后記住一定要使用source/etc/profile命令使得配置生效2.1.3任務實施2.本地模式的部署步驟7:初始化mysql,運行以下命令,看到“schemaToolcompleted”,則表明初始化成功,如圖2-91所示[root@node2hive]#schematool-initSchema-dbTypemysql步驟8:輸入hive命令,顯示hive>提示符則說明Hive本地模式部署以及配置成功,如圖2-92所示圖2-91圖2-922.1.3任務實施3.遠程模式的部署步驟1:node2啟動HiveServer2服務在node2虛擬機上運行hiveserver2命令,啟動HiveServer2服務,HiveServer2啟動成功后如圖2-93所示。步驟2:上傳并安裝Hive到node3的tools目錄下,參看嵌入模式的步驟1圖2-932.1.3任務實施3.遠程模式的部署步驟3:配置Hive,/tools/hive目錄下新建warehouse目錄和tmp目錄,然后在/tools/hive/conf目錄下用vi新建hive-site.xml并配置相關信息[root@node3hive]cdconf[root@node3conf]vihive-site.xml<?xmlversion="1.0"encoding="UTF-8"standalone="no"?><?xml-stylesheettype="text/xsl"href="configuration.xsl"?><configuration><!--配置Hive數(shù)據(jù)存儲在HDFS上的目錄--><property><name>hive.metastore.warehouse.dir</name><value>/hive/warehouse</value></property>

<!--配置Hive在HDFS上的臨時目錄--><property><name>hive.exec.scratchdir</name><value>/tools/hive/tmp</value></property>

<!--配置Hive開啟本地模式-><property><name>hive.metastore.local</name><value>false</value></property>

<property><name>hive.metastore.uris</name><value>thrift://node2:9083</value></property></configuration>2.1.3任務實施3.遠程模式的部署步驟4:配置node3的hive環(huán)境變量,使用vi/etc/profile命令編輯系統(tǒng)的環(huán)境變量文件,在文件尾部添加如下內容,如圖2-94所示。exportHIVE_HOME=/tools/hiveexportPATH=$PATH:$HIVE_HOME/bin圖2-94配置環(huán)境變量后記住一定要使用source/etc/profile命令使得配置生效2.1.3任務實施3.遠程模式的部署步驟5:node3啟動Hive客戶端,在node3虛擬機上運行Hive的客戶端工具beeline來遠程連接node服務端,命令如下:[root@node3~]#beeline-ujdbc:hive2://node2:10000-nroot–p上述命令beeline表示客戶端連接命令;-u為beeline命令參數(shù),表示連接的HiveServer2的服務端地址;-n表示服務端用戶名;-p為服務端用戶密碼。連接成功后如圖2-95所示。圖2-952.1.3任務實施3.遠程模式的部署步驟6:驗證Hive遠程連接在node3虛擬機的beeline客戶端工具中執(zhí)行showdatabases命令,查看服務端數(shù)據(jù)庫列表,如果能夠顯示node2中Hive數(shù)據(jù)庫列表則表示遠程連接成功,如圖2-96所示。圖2-96項目總結我們在項目中首先學習了虛擬機軟件的安裝、創(chuàng)建,在虛擬機中安裝和克隆Linux系統(tǒng),以及進行網絡配置的詳細步驟,其次介紹了Hadoop環(huán)境的搭建過程,包括如何配置主機名與IP的映射,SSH免密登錄,JDK的安裝,Hadoop的完全分布式部署的步驟,最后詳細介紹了Hive內嵌模式、本地模式、遠程模式這三種模式的搭建過程。在本項目中,不僅掌握虛擬機安裝Linux的過程,同時掌握了Hadoop完全分布式部署步驟,以及Hive三種模式的安裝與部署。感謝您的觀看《Hive數(shù)據(jù)倉庫應用教程》項目三Hive基本語法《Hive數(shù)據(jù)倉庫應用教程》目錄/CONTENTS任務3-1認識數(shù)據(jù)類型行業(yè)PPT模板/hangye/任務3-2認識運算符1234任務3-3認識Hive命令任務3-4存儲數(shù)據(jù)認識數(shù)據(jù)類型任務3-1《Hive數(shù)據(jù)倉庫應用教程》3.1.1任務描述在當前的任務中,我們將深入探討Hive基本數(shù)據(jù)類型、復雜數(shù)據(jù)類型及數(shù)據(jù)類型之間的轉換。數(shù)據(jù)表的設計與實現(xiàn)將直接影響數(shù)據(jù)庫的運行效率。通過本次任務,讀者將更好地理解Hive數(shù)據(jù)類型為認識和理解數(shù)據(jù)表結構打下基礎。3.1.2任務準備知識1.Hive數(shù)據(jù)類型的概念(1)數(shù)據(jù)類型是如何在文本文件中進行表示的(2)考慮文本存儲中為了解決各種性能問題2.Hive支持的數(shù)據(jù)類型(1)基本數(shù)據(jù)類型(數(shù)值型、字符串型、布爾型、日期時間型)(2)復雜數(shù)據(jù)類型(數(shù)組(Array)、映射(Map)和結構體(Struct)類型)3.1.3任務實施1.Hive基本數(shù)據(jù)類型基本數(shù)據(jù)類型基本數(shù)據(jù)類型TINYINTSTRINGSMALLINTVARCHARINTCHARBIGINTBOOLEANFLOATDATEDOUBLETIMESTAMPDECIMALBINARYNUMERIC3.1.3任務實施2.Hive復雜數(shù)據(jù)類型包括:數(shù)組Array、映射Map、結構體StructArray類型聲明格式為Array<data_type>,表示相同數(shù)據(jù)類型的數(shù)據(jù)所構成的集合。Array元素的訪問通過從0下標開始。Map類型通過Map<key,value>鍵值對來聲明,key只能是基本數(shù)據(jù)類型,value可以是任意數(shù)據(jù)類型。Map數(shù)據(jù)元素的訪問使用[],例Map[‘Tom’]。Struct類型包含不同數(shù)據(jù)類型的元素,其類型可以是任意的基本數(shù)據(jù)類型。Struct類型更靈活,可以存儲多種數(shù)據(jù)類型的數(shù)據(jù),Struct元素的訪問使用點運算符。3.1.3任務實施2.Hive復雜數(shù)據(jù)類型包括:數(shù)組Array、映射Map、結構體Struct這里有一個用于演示如何使用這些數(shù)據(jù)類型的表結構聲明語句,這是一張?zhí)摌嫷谋?CREATETABLEcomplex(nameSTRING,friendsARRAY<STRING>,ChildrenMAP<STRING,INT>,AddressSTRUCT<street:STRING,city:STRING>);其中,name是一個簡單的字符串﹔friends使用的是數(shù)組類型,children使用的是map類型,包括孩子的姓名和年齡分別使用了字符串和整型。address字段使用的是struct類型,包括street和city都使用字符串類型。3.1.3任務實施3.Hive類型轉換(1)隱式類型轉換所有整數(shù)類型、FLOAT和STRING類型都可以隱式地轉換成DOUBLE。

TINYINT、SMALLINT、INT都可以轉換為FLOAT。BOOLEAN類型不可以轉換為任何其它的類型。TimeStamp類型和Date類型可以隱式地轉換成文本類型(2)強制數(shù)據(jù)類型轉換數(shù)據(jù)類型強制轉換的語法格式:CAST(exprAS<type>)例如CAST(1'ASINT)將把字符串'1'轉換成整數(shù)1;如果強制類型轉換失敗,如執(zhí)行CAST('80'ASINT),表達式返回空值NULL。Hive可以在TimeStamp類型與Date類型和字符串類型之間進行強制轉換。認識運算符任務3-2《Hive數(shù)據(jù)倉庫應用教程》3.2.1任務描述

在Hive的基本操作中,經常需要查詢出數(shù)據(jù)表中滿足條件的數(shù)據(jù),往往條件不是單一的,需要配合相應的運算符來進行實現(xiàn)。本任務將學會Hive的不同運算符,包括關系運算符、算術運算符、邏輯運算符、復雜運算符等。為實現(xiàn)數(shù)據(jù)表的查詢打下基礎。3.2.2任務準備知識

Hive運算符與其他高級語言中運算符類似,由變量、常量等連接表達式中的各個操作數(shù),其作用是指明對操作數(shù)進行運算。Hive中常見的運算符有關系運算符、算術運算符、邏輯運算符、復雜運算符。3.2.3任務實施1.關系運算符關系運算符又稱比較運算符,用于比較兩個表達式的值,其運算結果為邏輯值,可以為True、False或NULL。(1)=運算符=運算符用于比較表達式的兩邊是否相等,也可以對字符串進行比較:select3.14=3.142,2.12=2.120,'a'='a','apple'='pear';3.2.3任務實施1.關系運算符(2)<>運算符與=運算符相反的是!=運算符,它用來檢測表達式的兩邊是否相等,如果不相等返回真值,相等則返回假值。示例如下:select3<>3,5<>6,'5a'<>'5c';3.2.3任務實施1.關系運算符(3)>、>=、<、<=運算符與=運算符相反的是!=運算符,它用來檢測表達式的兩邊是否相等,如果不相等返回真值,相等則返回假值。示例如下:select3<>3,5<>6,'5a'<>'5c';3.2.3任務實施1.關系運算符(4)[not]null運算符判斷表達式的結果是否為null,為null則為真,否則相反,如果是notnull則情況正好和null相反。舉例如下:select1fromdualwhere'hello'isnull;3.2.3任務實施1.關系運算符(5)[not]like運算符like運算符是字符串模式匹配,可以包含字符或數(shù)字:%代表零或多個字符,_代表一個字符。若與其匹配,則返回true,否則返回false。舉例:select1fromdualwhere'hello'like'he%';3.2.3任務實施1.關系運算符(6)rlike運算符確定字符串是否匹配正則表達式,是REGEXP_LIKE的同義詞。例如:判斷起始為h,結尾為o的字符串匹配:select1fromdualwhere'hello'rlike'^h.*o$';3.2.3任務實施2.算術運算符算術運算符是Hive中最基本的運算符,用于各類數(shù)值運算,返回數(shù)值類型。運算符支持數(shù)據(jù)類型示例示例描述+所有數(shù)字數(shù)據(jù)類型A+BA和B相加-所有數(shù)字數(shù)據(jù)類型A-BA減去B*所有數(shù)字數(shù)據(jù)類型A*BA和B相乘/所有數(shù)字數(shù)據(jù)類型A/BA除以B,返回商%所有數(shù)字數(shù)據(jù)類型A%BA對B取余,返回余數(shù)3.2.3任務實施3.邏輯運算符邏輯運算符用于對某個條件進行測試,運算結果為TRUE或FALSE。邏輯運算符支持數(shù)據(jù)類型示例示例描述ANDBoolean數(shù)據(jù)類型A邏輯與,表達式A與表達式B必須都為true,表達式結果才為trueORBoolean數(shù)據(jù)類型A邏輯或,表達式A或表達式B至少一個為true,表達式結果才為trueNOTBoolean數(shù)據(jù)類型NOT邏輯非3.2.3任務實施3.邏輯運算符(1)and運算符and運算符用于測

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論