版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Python大數(shù)據(jù)可視化基礎(chǔ)目錄TOC\o"1-1"\h\u322861.1大數(shù)據(jù)時代的技術(shù)挑戰(zhàn) 4241991.2數(shù)據(jù)可視化的技術(shù)難點 520961.3可視化工具的必備特性 6223302.1集群的安裝及網(wǎng)絡(luò)配置 8163802.2集群案例數(shù)據(jù)集簡介 1457042.3連接Hive的圖形界面工具 17274173.1Tableau 4623603.2Zeppelin 55118023.3Python在數(shù)據(jù)可視化中的應(yīng)用 68744Python可視化編程基礎(chǔ) 74139694.1 Python環(huán)境安裝 74204914.2Python代碼開發(fā)工具 92179604.3Python連接數(shù)據(jù)源 10315457Python數(shù)據(jù)可視化庫 115121475.1Matplotlib 115303925.2Pyecharts 11767625.3Seaborn 119291835.4ggplot 121219385.5Bokeh 12451075.6Pygal 126253665.7Plotly 128179625.8其他可視化庫 130本部分介紹大數(shù)據(jù)可視化技術(shù)的基礎(chǔ)知識,包括大數(shù)據(jù)開發(fā)環(huán)境的搭建、常見的大數(shù)據(jù)可視化工具、Python可視化編程基礎(chǔ)以及Python中幾個重要的可視化分析庫。由于本文后續(xù)的可視化分析是基于Hadoop集群講解的,因此我們首先需要搭建集群,然后簡單介紹集群的一些基礎(chǔ)知識和案例數(shù)據(jù)集,以及幾種連接Hadoop Hive的圖界面工具,并且通過實際案例介紹Tableau、Zeppelin和Python三類大數(shù)據(jù)常用的可視化工具。此外,還將講解Python的一些基礎(chǔ)知識,包括軟件的安裝、代碼開發(fā)環(huán)境、如何訪問常見的數(shù)據(jù)源以及Python中幾類比較重要的可視化庫。第1章大數(shù)據(jù)可視化概述“讓每個人都成為數(shù)據(jù)分析師”是大數(shù)據(jù)時代的要求,數(shù)據(jù)可視化技術(shù)的出現(xiàn)恰恰從側(cè)面緩解了專業(yè)數(shù)據(jù)分析人才的缺乏。Tableau、Microsoft、IBM等IT廠商紛紛加入數(shù)據(jù)可視化的陣營,在降低數(shù)據(jù)分析門檻的同時,為分析結(jié)果提供了更炫的展現(xiàn)效果。大數(shù)據(jù)時代的技術(shù)挑戰(zhàn)大數(shù)據(jù)的出現(xiàn)正在引發(fā)全球范圍內(nèi)技術(shù)與商業(yè)變革的深刻變化。在技術(shù)領(lǐng)域,以往更多依靠模型的方法,現(xiàn)在可以借用規(guī)模龐大的數(shù)據(jù),用基于統(tǒng)計的方法,使語音識別、機器翻譯等技術(shù)在大數(shù)據(jù)時代取得了突破性的進(jìn)展。既有技術(shù)架構(gòu)和路線已經(jīng)無法高效處理海量的數(shù)據(jù)。對于相關(guān)企業(yè)組織來說,如果投入巨大而采集的信息無法及時處理與反饋,就會得不償失。可以說,大數(shù)據(jù)時代對人類的數(shù)據(jù)駕馭能力提出了新挑戰(zhàn),也為人們獲得更為深刻、全面的洞察能力提供了前所未有的空間。大數(shù)據(jù)時代主要有以下4個技術(shù)挑戰(zhàn):第一個挑戰(zhàn)是數(shù)據(jù)量大。大數(shù)據(jù)的起始計量單位是PB(1000TB)、EB(100萬TB)或ZB(10億TB)。目前,企業(yè)面臨數(shù)據(jù)量的大規(guī)模增長,預(yù)測到2020年,全球數(shù)據(jù)量將擴大50倍。如今,大數(shù)據(jù)的規(guī)模尚在不斷變化,單一數(shù)據(jù)集的規(guī)模范圍從幾十TB到數(shù)PB不等。導(dǎo)致我們無法通過目前主流的軟件工具收集、管理、處理數(shù)據(jù)并整理成為幫助企業(yè)達(dá)到經(jīng)營決策目的的資訊。第二個挑戰(zhàn)是數(shù)據(jù)類型繁多。包括網(wǎng)絡(luò)日志、音頻、視頻、圖片、地理位置信息等,多種類型的數(shù)據(jù)對數(shù)據(jù)處理能力提出了更高要求。數(shù)據(jù)多樣性的增加主要由新型多結(jié)構(gòu)數(shù)據(jù)和多種數(shù)據(jù)類型(包括網(wǎng)絡(luò)日志、社交媒體、互聯(lián)網(wǎng)搜索、手機通話記錄及傳感器數(shù)據(jù)等)造成。其中,越來越多的傳感器被安裝在火車、汽車和飛機上,每個傳感器都增加了數(shù)據(jù)的多樣性。第三個挑戰(zhàn)是數(shù)據(jù)價值密度低。大數(shù)據(jù)結(jié)構(gòu)非常復(fù)雜,有結(jié)構(gòu)化的,也有非結(jié)構(gòu)化的,增長速度飛快,單條數(shù)據(jù)的價值密度極低。此外,隨著物聯(lián)網(wǎng)的廣泛應(yīng)用,信息感知無處不在。信息海量,但價值密度較低,如何通過強大的機器算法迅速地完成數(shù)據(jù)的價值“提純”,是大數(shù)據(jù)時代亟待解決的難題。第四個挑戰(zhàn)是高速性。描述的是數(shù)據(jù)被創(chuàng)建和移動的速度。在高速網(wǎng)絡(luò)時代,通過實現(xiàn)軟件性能優(yōu)化的高速計算機處理器和服務(wù)器創(chuàng)建實時數(shù)據(jù)流已成為流行趨勢。企業(yè)不僅需要了解如何快速創(chuàng)建數(shù)據(jù),還必須知道如何將數(shù)據(jù)快速處理、分析并返回給用戶,以滿足用戶的實時需求。數(shù)據(jù)可視化的技術(shù)難點大數(shù)據(jù)具有多層結(jié)構(gòu),意味著會呈現(xiàn)多變的形式和類型。相較于傳統(tǒng)的業(yè)務(wù)數(shù)據(jù),大數(shù)據(jù)存在不規(guī)則和模糊不清的特性,造成很難甚至無法使用傳統(tǒng)應(yīng)用軟件進(jìn)行分析。傳統(tǒng)業(yè)務(wù)數(shù)據(jù)隨著時間的演變已經(jīng)擁有標(biāo)準(zhǔn)的格式,能夠被標(biāo)準(zhǔn)商務(wù)智能軟件識別。目前,企業(yè)面臨的挑戰(zhàn)是處理并從各種形式呈現(xiàn)的復(fù)雜數(shù)據(jù)中挖掘價值。傳統(tǒng)數(shù)據(jù)可視化工具僅將數(shù)據(jù)加以組合,通過不同展現(xiàn)方式提供給用戶,用于發(fā)現(xiàn)數(shù)據(jù)之間的關(guān)聯(lián)信息。近年來,隨著云和大數(shù)據(jù)時代的來臨,數(shù)據(jù)可視化產(chǎn)品已經(jīng)不再滿足于使用傳統(tǒng)數(shù)據(jù)可視化工具對數(shù)據(jù)倉庫中的數(shù)據(jù)抽取、歸納并簡單地展現(xiàn)。新型數(shù)據(jù)可視化產(chǎn)品必須滿足互聯(lián)網(wǎng)爆發(fā)的大數(shù)據(jù)需求,必須快速收集、篩選、分析、歸納、展現(xiàn)決策者所需要的信息,并根據(jù)新增數(shù)據(jù)進(jìn)行實時更新,這是大數(shù)據(jù)可視化的技術(shù)難點。大數(shù)據(jù)技術(shù)的有效可視化不應(yīng)該只是為管理層繪制漂亮的圖片。專家表示,企業(yè)可通過考慮布局、迭代設(shè)計、吸引用戶和了解業(yè)務(wù)需求來改善結(jié)果。開展數(shù)據(jù)可視化項目的企業(yè)提供了以下幾個注意事項:了解業(yè)務(wù)。分析之前與業(yè)務(wù)人員進(jìn)行深入溝通,了解他們希望獲取什么信息。在構(gòu)思不同的儀表板時,應(yīng)該始終考慮最終用戶,如管理層、分析師、IT希望從不同類型的可視化分析中獲取什么,只有這樣,大數(shù)據(jù)的可視化才有實際價值。注重個性化。應(yīng)該確保儀表板向最終用戶顯示個性化信息,以及為最終用戶提需求,而不僅僅是強制列出所有可訪問的數(shù)據(jù)。盡可能簡化。由于大數(shù)據(jù)可視化工具的功能非常豐富,因此通常會導(dǎo)致分析師化,確保最終產(chǎn)品不是徒有炫酷外表而不能滿足實際需求。從用戶角度。應(yīng)該使用顏色、形狀、大小和布局來顯示可視化的設(shè)計和使用?;靵y,應(yīng)該有選擇地使用這些元素。視化專家不建議使用餅圖,這是因為人眼和頭腦可以更容易地測量長度或位置之間的差異,而很難識別角度差異??梢暬ぞ叩谋貍涮匦詳?shù)據(jù)可視化的歷史可以追溯到20世紀(jì)50年代計算機圖形學(xué)的早期,人們利用計算機創(chuàng)建了首批圖形圖表。到了1987年,一篇題目為“VisualizationinScientificComputing”(科學(xué)計算中的可視化,即科學(xué)可視化)的報告成為數(shù)據(jù)可視化領(lǐng)域發(fā)展的里程碑,它強調(diào)了基于計算機可視化技術(shù)新方法的必要性。隨著人類采集的數(shù)據(jù)種類和數(shù)量的增長、計算機運算能力的提升,越來越多高級計算機圖形學(xué)技術(shù)與方法應(yīng)用于處理和可視化這些規(guī)模龐大的數(shù)據(jù)集。20世紀(jì)90年代初期,“信息可視化”成為新的研究領(lǐng)域,旨在為許多應(yīng)用領(lǐng)域?qū)τ诔橄螽愘|(zhì)性數(shù)據(jù)集的分析工作提供支持。當(dāng)前,數(shù)據(jù)可視化是一個既包含科學(xué)可視化又包含信息可視化的新概念。數(shù)據(jù)可視化是可視化技術(shù)在非空間數(shù)據(jù)上的新應(yīng)用,使得人們不再局限于通過關(guān)系數(shù)據(jù)表觀察和分析數(shù)據(jù)信息,還能以更直觀的方式看到數(shù)據(jù)與數(shù)據(jù)之間的結(jié)構(gòu)關(guān)系。數(shù)據(jù)可視化是關(guān)于數(shù)據(jù)視覺表現(xiàn)形式的研究。這種數(shù)據(jù)視覺表現(xiàn)形式被定義為一種以某種概要形式抽取出來的信息,包括相應(yīng)信息單位的各種屬性和變量。在大數(shù)據(jù)時代,數(shù)據(jù)可視化工具必須具備以下4個特性:實時性:數(shù)據(jù)可視化工具必須適應(yīng)大數(shù)據(jù)時代數(shù)據(jù)量爆炸式增長的需求,必須快速收集、分析數(shù)據(jù),并對數(shù)據(jù)信息進(jìn)行實時更新。信息多變的特點。現(xiàn)的多維度要求。多種數(shù)據(jù)集成支持方式:數(shù)據(jù)的來源不局限于數(shù)據(jù)庫,數(shù)據(jù)可視化工具將支持團(tuán)隊協(xié)作數(shù)據(jù)、數(shù)據(jù)倉庫、文本等多種方式,并能夠通過互聯(lián)網(wǎng)進(jìn)行展現(xiàn)。數(shù)據(jù)可視化的思想是將數(shù)據(jù)庫中每一個數(shù)據(jù)項作為單個圖元元素,通過抽取的數(shù)據(jù)構(gòu)成數(shù)據(jù)圖像,同時將數(shù)據(jù)的各個屬性值加以組合,并以多維數(shù)據(jù)的形式通過圖表、三維等方式展現(xiàn)數(shù)據(jù)之間的關(guān)聯(lián)信息,使用戶能從不同維度和不同組合對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行觀察,從而對數(shù)據(jù)進(jìn)行更深入的分析和挖掘。第2章搭建大數(shù)據(jù)開發(fā)環(huán)境本文的可視化分析是基于Hadoop集群展開的,因此首先需要搭建集群,我們這里基于3臺虛擬機搭建了一個由3個節(jié)點(master、slave1、slave2)構(gòu)成的Hadoop完全分布式集群,節(jié)點安裝的操作系統(tǒng)為CentOS6.5,Hadoop版本選擇2.5.2。本章將簡單介紹一些Hadoop幾種常用的連接集群的圖形界面工具。集群的安裝及網(wǎng)絡(luò)配置Hadoop集群概述Hadoop在2006年成為雅虎項目,隨后晉升為頂級Apache開源項目。它是一種通用的分布式系統(tǒng)基礎(chǔ)架構(gòu),具有多個組件:Hadoop分布式文件系統(tǒng)(HadoopDistributedFileSystem,HDFS),將文件以Hadoop本機格式存儲并在集群中并行化;YARN,協(xié)調(diào)應(yīng)用程序運行時的調(diào)度程序;MapReduce,實際并行處理數(shù)據(jù)的算法。此外,通過一個Thrift客戶端,用戶可以編寫MapReduce或者Python代碼,本文就是使用Python對集群中的數(shù)據(jù)進(jìn)行可視化分析的。Hadoop分布式文件系統(tǒng)是一種文件系統(tǒng)實現(xiàn),類似于NTFS、EXT3、EXT4等,它將存儲在集群中的文件分成塊,每塊默認(rèn)為64MB,比一般文件系統(tǒng)塊大得多,并分布在多臺機器上,每塊又會有多塊冗余備份(默認(rèn)為3),以增強文件系統(tǒng)的容錯能力,在具體實現(xiàn)中主要有以下幾個部分:名稱節(jié)點(NameNode)名稱節(jié)點的職責(zé)在于存儲整個文件系統(tǒng)的元數(shù)據(jù),這是一個非常重要的角色。元數(shù)據(jù)在集群啟動時會加載到內(nèi)存中,元數(shù)據(jù)的改變也會寫到磁盤的系統(tǒng)映像文件中,同時還會維護(hù)對元數(shù)據(jù)的編輯日志。HDFS存儲文件時是將文件劃分成邏輯上的塊存儲的,對應(yīng)關(guān)系都存儲在名稱節(jié)點上,如果有損壞,整個集群的數(shù)據(jù)就會不可用。我們可以采取一些措施備份名稱節(jié)點的元數(shù)據(jù),例如將名稱節(jié)點目錄同時設(shè)置到本地目錄和一個NFS目錄,這樣任何元數(shù)據(jù)的改變都會寫入兩個位置進(jìn)行冗余備份,使得使用中的名稱節(jié)點關(guān)機后,可以使用NFS上的備份文件恢復(fù)文件系統(tǒng)。第二名稱節(jié)點(SecondaryNameNode)這個角色的作用是定期通過編輯日志合并命名空間映像,防止編輯日志過大。不過第二名稱節(jié)點的狀態(tài)滯后于主名稱節(jié)點,如果主名稱節(jié)點突然關(guān)閉,那么必定會有一些文件損失。數(shù)據(jù)節(jié)點(DataNode)這是HDFS中具體存儲數(shù)據(jù)的地方,一般有多臺機器。除了提供存儲服務(wù)外,還定時向名稱節(jié)點發(fā)送存儲的塊列表。名稱節(jié)點沒有必要永久保存每個文件、每個塊所在的數(shù)據(jù)節(jié)點,這些信息會在系統(tǒng)啟動后由數(shù)據(jù)節(jié)點重建。Hadoop一般采用MapReduce計算框架,在系統(tǒng)架構(gòu)上,它是一種主從架構(gòu),由一個單獨的JobTracker節(jié)點和多個TaskTracker節(jié)點共同組成,核心是將任務(wù)分解成小任務(wù),由不同計算者同時參與計算,并將各個計算者的計算結(jié)果合并,得出最終結(jié)果。模型本身非常簡單,一般只需要實現(xiàn)兩個接口即可,關(guān)鍵在于怎樣將實際問題轉(zhuǎn)化為MapReduce任務(wù)。主要由以下兩部分組成:負(fù)責(zé)調(diào)度構(gòu)成一個作業(yè)的所有任務(wù),這些任務(wù)分布在不同的TaskTracker控它們的執(zhí)行,以及重新執(zhí)行已經(jīng)失敗的任務(wù)等。負(fù)責(zé)具體的任務(wù)執(zhí)行。TaskTracker通過“心跳”的方式告知JobTracker其狀態(tài),并由JobTracker根據(jù)報告的狀態(tài)為其分配任務(wù)。TaskTracker會啟動一個新JVM運行任務(wù),當(dāng)然JVM實例也可以被重用。Hadoop在大數(shù)據(jù)領(lǐng)域的應(yīng)用前景很大,不過因為是開源技術(shù),實際應(yīng)用過程中存在很多問題。于是出現(xiàn)了各種Hadoop發(fā)行版,國外目前主要有3家創(chuàng)業(yè)公司在做這項業(yè)務(wù):Cloudera、Hortonworks和MapR。Cloudera和MapR的發(fā)行版是收費的,它們基于開源技術(shù),提高了穩(wěn)定性,同時強化了一些功能,定制化程度較高,核心技術(shù)是不公開的,收入主要來自軟件。Hortonworks則走向另一條路,它將核心技術(shù)完全公開,用于推動Hadoop社區(qū)的發(fā)展。這樣做的好處是,如果開源技術(shù)有很大提升,他們的受益就會很大,因為定制化程度較少,自身不會受到技術(shù)提升的沖擊。集群軟件及其版本本文使用的Hadoop集群是基于3臺虛擬機搭建的,它是由3個節(jié)點(master、slave1、slave2)構(gòu)成的Hadoop完全分布式集群,節(jié)點使用的操作系統(tǒng)為CentOS6.5,Hadoop版本為2.5.2。首先,需要下載并安裝VMware,這里我們選擇的是VMwareWorkstationPro15.1.0,案,是開展業(yè)務(wù)不可或缺的利器,具體安裝過程可參考網(wǎng)上的相關(guān)教程,這里不進(jìn)行介紹。然后,我們需要下載并安裝CentOS6.5系統(tǒng)。CentOS是一個基于RedHatLinux提供的可自由使用源代碼的企業(yè)級Linux發(fā)行版本,每個版本的CentOS都會獲得10年的支持。具體安裝過程可參考網(wǎng)上的相關(guān)教程,這里也不進(jìn)行具體介紹。本文使用的Hadoop集群上安裝的軟件及其版本如下:apache-hive-1.2.2-bin.tar.gzhadoop-2.5.2.tar.gzapache-hive-1.2.2-bin.tar.gzhadoop-2.5.2.tar.gzjdk-7u71-linux-x64.tar.gzmysql-5.7.20-linux-glibc2.12-x86_64.tar.gzscala-2.10.4.tgzspark-1.4.0-bin-hadoop2.4.tgzsqoop-1.4.6.binhadoop-2.0.4-alpha.tar.gzzeppelin-0.7.3-bin-all.tgz其中,集群主節(jié)點master上安裝的軟件如下:hadoop-2.5.2jdk-7u71spark-1.4.0sqoop-1.4.6zeppelin-0.7.3spark-1.4.0sqoop-1.4.6zeppelin-0.7.3集群主節(jié)點/etc/profile文件的配置如下:exportJAVA_HOME=/usr/java/jdk1.7.0_71/exportHADOOP_HOME=/home/dong/hadoop-2.5.2exportSCALA_HOME=/home/dong/scala-2.10.4exportJAVA_HOME=/usr/java/jdk1.7.0_71/exportHADOOP_HOME=/home/dong/hadoop-2.5.2exportSCALA_HOME=/home/dong/scala-2.10.4exportSPARK_HOME=/home/dong/spark-1.4.0-bin-hadoop2.4exportHIVE_HOME=/home/dong/apache-hive-1.2.2-binexportSQOOP_HOME=/home/dong/sqoop-1.4.6.binhadoop-2.0.4-alphaexportPYTHONPATH=/home/dong/spark-1.4.0-bin-hadoop2.4/PythonexportRPATH=/home/dong/spark-1.4.0-bin-hadoop2.4/RexportZEPPELIN_HOME=/home/dong/zeppelin-0.7.3-bin-allexportPATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SCALA_HOME/bin:$JAVA_HOME/bi此外,集群兩個從節(jié)點slave1與slave2上安裝的軟件如下:hadoop-2.5.2jdk-7u71scala-2.10.4spark-1.4.0hadoop-2.5.2jdk-7u71scala-2.10.4spark-1.4.0集群兩個從節(jié)點/etc/profile文件的配置如下:exportJAVA_HOME=/usr/java/jdk1.7.0_71/exportHADOOP_HOME=/home/dong/hadoop-2.5.2exportSCALA_HOME=/home/dong/scala-2.10.4exportJAVA_HOME=/usr/java/jdk1.7.0_71/exportHADOOP_HOME=/home/dong/hadoop-2.5.2exportSCALA_HOME=/home/dong/scala-2.10.4exportSPARK_HOME=/home/dong/spark-1.4.0-bin-hadoop2.4exportPYTHONPATH=/home/dong/spark-1.4.0-bin-hadoop2.4/PythonexportRPATH=/home/dong/spark-1.4.0-bin-hadoop2.4/RexportPATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SCALA_HOME/bin:$JAVA_HOME/bi集群網(wǎng)絡(luò)環(huán)境配置為了使得集群既能相互之間進(jìn)行通信,又能夠進(jìn)行外網(wǎng)通信,需要為節(jié)點添加網(wǎng)卡,上網(wǎng)方式均采用橋接模式,外網(wǎng)IP設(shè)置為自動獲取,通過此網(wǎng)卡進(jìn)行外網(wǎng)訪問,配置應(yīng)該按照當(dāng)前主機的上網(wǎng)方式進(jìn)行合理配置,如果不與主機通信,上網(wǎng)方式就可以采用NAT,這樣選取默認(rèn)配置就行,內(nèi)網(wǎng)IP設(shè)置為靜態(tài)IP。配置集群節(jié)點網(wǎng)絡(luò)Hadoop集群各節(jié)點的網(wǎng)絡(luò)IP配置如下:mastermaster:slave1:slave2:下面給出固定master虛擬機IP地址的方法,slave1和slave2與此類似:vi/etc/sysconfig/network-scripts/ifcfg-eth0TYPE="Ethernet"vi/etc/sysconfig/network-scripts/ifcfg-eth0TYPE="Ethernet"UUID="b8bbe721-56db-426c-b1c8-38d33c5fa61d"ONBOOT="yes"NM_CONTROLLED="yes"BOOTPROTO="static"IPADDR=NETMASK=GATEWAY=DNS1=DNS2=14為了不直接使用IP,可以通過設(shè)置hosts文件達(dá)到3個節(jié)點之間相互登錄的效果,3個節(jié)點的設(shè)置都相同。配置hosts文件,在文件尾部添加如下行,保存后退出:vi/etc/hostsmastervi/etc/hostsmasterslave1slave2關(guān)閉防火墻和SELinux為了節(jié)點間的正常通信,需要關(guān)閉防火墻,3個節(jié)點的設(shè)置相同,集群處于局域網(wǎng)中,因此關(guān)閉防火墻一般不會存在安全隱患。查看防火墻狀態(tài)的命令:serviceiptablesstatusserviceiptablesstatus防火墻即時生效,重啟后復(fù)原,命令如下:開啟:serviceiptablesstart。關(guān)閉:serviceiptablesstop。如果需要永久性生效,重啟后不會復(fù)原,命令如下:開啟:chkconfigiptableson。關(guān)閉:chkconfigiptablesoff。關(guān)閉SELinux的方法:臨時關(guān)閉SELinux:setenforce0。臨時打開SELinux:setenforce1。查看SELinux的狀態(tài):getenforce。開機關(guān)閉SELinux:編輯/etc/selinux/config文件,將SELinux的值設(shè)置為disabled,下次開機SELinux就不會啟動了。免密鑰登錄設(shè)置設(shè)置master節(jié)點和兩個slave節(jié)點之間的雙向SSH免密通信。下面以master節(jié)點SSH免密登錄slave節(jié)點設(shè)置為例,進(jìn)行SSH設(shè)置介紹(以下操作均在master機器上操作)。首先生成master的rsa密鑰:$ssh-keygentrsa。設(shè)置全部采用默認(rèn)值,按回車鍵。將生成的rsa追加寫入授權(quán)文件:$cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys。給授權(quán)文件權(quán)限:$chmod600~/.ssh/authorized_keys。進(jìn)行本機SSH測試:$sshmaster。正常免密登錄后,所有的SSH第一次登錄都需要密碼,此后都不需要密碼。將master上的authorized_keys傳到slave1和slave2:scp~/.ssh/authorized_keysroot@slave1:~/.ssh/authorized_keysscp~/.ssh/authorized_keysroot@slave2:~/.ssh/authorized_keysscp~/.ssh/authorized_keysroot@slave1:~/.ssh/authorized_keysscp~/.ssh/authorized_keysroot@slave2:~/.ssh/authorized_keys登錄slave1的操作:$sshslave1,輸入密碼登錄。退出slave1:$exit。進(jìn)行免密SSH登錄測試:$sshslave1。slave2進(jìn)行相同的操作。集群案例數(shù)據(jù)集簡介本節(jié)以某上市電商企業(yè)的客戶數(shù)據(jù)、訂單數(shù)據(jù)、股價數(shù)據(jù)為基礎(chǔ)進(jìn)行數(shù)據(jù)可視化的講解,當(dāng)然實際工作中的數(shù)據(jù)分析需求應(yīng)該更加繁雜,但是我們可以先結(jié)合業(yè)務(wù)背景將需求整理成相應(yīng)的指標(biāo),然后抽取出數(shù)據(jù),再應(yīng)用本文中介紹的數(shù)據(jù)可視化方法,從而實現(xiàn)我們的可視化分析需求。數(shù)據(jù)字段說明我們選取該上市電商企業(yè)的客戶數(shù)據(jù)、訂單數(shù)據(jù)、股價數(shù)據(jù)中的部分指標(biāo)作為分析的字段,分別存儲在customers、orders和stocks三張表中。下面逐一進(jìn)行說明??蛻舯韈ustomers包含客戶屬性的基本信息,例如客戶ID、性別、年齡、學(xué)歷、職業(yè)等12個字段,具體見表2-1。表2-1客戶表字段說明訂單表orders包含客戶訂單的基本信息,例如訂單ID、訂單日期、門店名稱、支付方式、發(fā)貨日期等24個字段,具體見表2-2。表2-2訂單表字段說明股價表stocks包含A企業(yè)近3年來股價的走勢信息,包含交易日期、開盤價、最高價、最低價、收盤價等7個字段,具體見表2-3。表2-3股價表字段說明數(shù)據(jù)導(dǎo)入說明企業(yè)的客戶表、訂單表和股價表的指標(biāo)及數(shù)據(jù)都整理好后,接下來的工作就是將數(shù)據(jù)導(dǎo)入Hadoop集群中,這個過程分成兩步:新建表和導(dǎo)入數(shù)據(jù)。注意這個過程都是在Hive中進(jìn)行的,所以需要啟動Hadoop集群和Hive。在新建表之前需要先新建數(shù)據(jù)庫,SQL語句如下:createdatabasesalescreatedatabasesales然后通過use 句使用sales數(shù)據(jù)庫,再使用下面的3條SQL語句創(chuàng)建customers、orders和stocks三張表:createtablecustomers(cust_idstring,genderstring,ageint,educationstring,createtableorders(order_idstring,order_datestring,store_namestring,pay_mcreatetablestocks(trade_datestring,openfloat,highfloat,lowfloat,closefcreatetablecustomers(cust_idstring,genderstring,ageint,educationstring,createtableorders(order_idstring,order_datestring,store_namestring,pay_mcreatetablestocks(trade_datestring,openfloat,highfloat,lowfloat,closef注意,由于企業(yè)的訂單數(shù)據(jù)一般較多,因此我們將orders表定義成了分區(qū)表,分區(qū)字段是年份dt,而customers表和stocks表都是非分區(qū)表。如果想深入了解分區(qū)表與非分區(qū)表的區(qū)別與聯(lián)系,可以參閱相關(guān)大數(shù)據(jù)的圖書。表創(chuàng)建完成后,需要將數(shù)據(jù)導(dǎo)入相應(yīng)的表中,在Hive中可以通過loaddata命令實現(xiàn),例如導(dǎo)入customers表中的數(shù)據(jù)的命令如下:loaddatalocalinpath'/home/dong/sales/customers.txt'overwriteintotableloaddatalocalinpath'/home/dong/sales/customers.txt'overwriteintotable當(dāng)然,也可以使用Sqoop中的sqoopimport命令實現(xiàn),這里就不進(jìn)行詳細(xì)介紹了。對于分區(qū)表數(shù)據(jù)的導(dǎo)入,這個過程相對比較復(fù)雜,可以通過insert語句將非分區(qū)表的數(shù)據(jù)插入分區(qū)表中的方式實現(xiàn),兩張表的表結(jié)構(gòu)要一致。例如,orders_1存儲的是2019年的訂單數(shù)據(jù),需要將其導(dǎo)入orders表中,SQL語句為:insertintotableorderspartition(dt)selectinsertintotableorderspartition(dt)selectorder_id,order_date,store_name,其他年份的數(shù)據(jù)也可以通過類似的方法導(dǎo)入orders表,注意在導(dǎo)入完成后需要驗證一下數(shù)據(jù)是否正常導(dǎo)入,可以選擇一種后面將要介紹的連接Hive的圖形界面工具或者Hive的查詢數(shù)據(jù)命令。運行環(huán)境說明現(xiàn)在大數(shù)據(jù)比較火熱,企業(yè)的數(shù)據(jù)基本都存放在Hadoop環(huán)境中。因此,為了更好地貼近實際工作,使讀者學(xué)以致用,本文中使用的案例數(shù)據(jù)也存放在Hadoop集群中,一個主節(jié)點、兩個從節(jié)點的虛擬環(huán)境。當(dāng)然,這個環(huán)境和企業(yè)的真實環(huán)境可能有一定的差異,例如數(shù)據(jù)量的問題等,讀者可以結(jié)合實際情況對代碼進(jìn)行適當(dāng)?shù)男薷?。此外,對于Hadoop環(huán)境的搭建,具體的搭建過程比較復(fù)雜,由于篇幅所限,這里就不詳細(xì)介紹,畢竟本文的重點是介紹大數(shù)據(jù)環(huán)境下的數(shù)據(jù)可視化技術(shù),讀者可以參考網(wǎng)絡(luò)上的資料或相關(guān)圖書,只要懂一些Linux的基礎(chǔ)命令操作,并花費一定的時間,基本都可以成功搭建。連接Hive的圖形界面工具在日常工作中,為什么使用客戶端界面工具而不用命令行使用Hive呢?原因是通過界面工具查看分析Hive中的數(shù)據(jù)要方便很多,業(yè)務(wù)人員沒有權(quán)限通過命令行連接Hive,領(lǐng)導(dǎo)喜歡在界面工具上查看Hive中的數(shù)據(jù)。本節(jié)講解如何通過數(shù)據(jù)庫客戶端界面工具DBeaver、OracleSQLDeveloper、DbVisualizer和SQuirrelSQLClient等工具連接Hadoop集群的Hive數(shù)據(jù)庫。DBeaverDBeaver是一個通用的數(shù)據(jù)庫管理工具和SQL客戶端,支持MySQL、Oracle、DB2、MSSQL、Hive等數(shù)據(jù)庫,它提供一個圖形界面用來查看表結(jié)構(gòu)、執(zhí)行查詢、導(dǎo)出數(shù)據(jù)等。連接Hadoop集群Hive的工具還有很多,推薦使用DBeaver的原因是DBeaver簡單易用,支持各種關(guān)系型數(shù)據(jù)庫,還有就是DBeaver的快捷鍵和Eclipse一樣,比如注釋、刪除、復(fù)制等操作。下載和安裝DBeaverDBeaver分為社區(qū)版和企業(yè)版,其中社區(qū)版是免費的,可以在官網(wǎng)上下載最新的社區(qū)版DBeaver,下載地址:https://dbeaver.io/download/,這里下載的是Windows 64位免安社區(qū)版,如圖2-1所示,讀者可以根據(jù)實際情況下載對應(yīng)版本。圖2-1下載DBeaver由于筆者下載的是免安裝版,因此解壓后,直接單擊dbeaver.exe就可以使用。啟動Hadoop集群測試連接前先啟動Hadoop和Hive的相關(guān)服務(wù)。啟動Hadoop集群。啟動Hive,如果想遠(yuǎn)程連接Hive,那么還需要啟動hiveserver2。創(chuàng)建Hive測試表,如果已經(jīng)有了,就可以省略。連接集群的具體步驟DBeaver連接關(guān)系型數(shù)據(jù)庫比較簡單,但是連接Hive要下載和配置驅(qū)動程序,過程相對比較復(fù)雜。下面介紹連接Hive的具體步驟。DBeaver,在界面中依次單擊“文件”→“新建”→“數(shù)據(jù)庫連接”,然后單擊“下一步”按鈕,如圖2-2所示。圖2-2選擇向?qū)нx擇新連接類型。這里我們選擇ApacheHive,單擊“下一步”按鈕,如圖2-3所示。從這里看到,DBeaver支持的數(shù)據(jù)庫類型是很豐富的。圖2-3選擇新連接類型通用JDBC連接設(shè)置。在常規(guī)界面,填寫JDBCURL、主機、端口、數(shù)據(jù)庫/模式、用戶名和密碼等信息,如圖2-4所示。圖2-4通用JDBC連接設(shè)置編輯驅(qū)動設(shè)置。單擊“編輯驅(qū)動設(shè)置”按鈕,在URL模板中根據(jù)Hadoop權(quán)限配置添加相應(yīng)的設(shè)置項,這里我們添加auth=noSasl,然后單擊“添加工件”按鈕,如圖2-5所示。圖2-5添加工件依賴。默認(rèn)Hive的驅(qū)動版本是最新的RELEASE,由于集群的Hive版本是1.2.2,因此需要手動增加驅(qū)動。下面分別配置Hive和Hadoop的驅(qū)動。首先我們配置Hive的驅(qū)動,在GroupId中輸入“org.apache.hive”,在Artifact Id中輸入“hive-jdbc”,在版本中輸入集群對應(yīng)的版本“1.2.2”,如圖2-6所示。圖2-6配置Hive驅(qū)動接下來配置Hadoop的驅(qū)動,在GroupId中輸入“org.apache.hadoop”,在ArtifactId中輸入“hadoop-core”,在版本中使用默認(rèn)值“RELEASE”,如圖2-7所示。圖2-7配置Hadoop驅(qū)動然后,單擊“下載/更新”按鈕,將會自動下載Hive和Hadoop的驅(qū)動程序,如圖2-8所示。圖2-8下載更新驅(qū)動單擊界面最下方的“找到類”按鈕并選擇“org.apache.hive.jdbc.HiveDriver”,上方的類名會自動補齊,如圖2-9所示。圖2-9配置驅(qū)動類測試連接是否正常首先,需要右擊連接的名稱“_Hadoop”,然后在下拉菜單中選擇“編輯連接”選項,如圖2-10所示。圖2-10編輯連接在連接配置界面,選擇“連接設(shè)置”選項,輸入JDBCURL、主機、數(shù)據(jù)庫/模式、用戶名和密碼等信息,如圖2-11所示。單擊“測試鏈接”按鈕,如果彈出如圖2-12所示的成功信息,就說明Hive正常連接,否則需要檢查連接設(shè)置,并重新進(jìn)行連接過程。圖2-11連接配置圖2-12連接成功不同職業(yè)客戶平均年齡分布我們可以在SQL界面輸入想要執(zhí)行的語句,例如我們要統(tǒng)計客戶中不同職業(yè)的平均年齡,SQL語句為“selectoccupation,round(avg(age),2)asavg_custfromcustomersgroupbyoccupation;”,SQL語句的執(zhí)行結(jié)果如圖2-13所示。圖2-13執(zhí)行SQL語句從結(jié)果可以看出:A企業(yè)客戶中,管理人員的平均年齡為42.98歲,普通工人的平均年齡為42.42歲,技術(shù)工人的平均年齡為40.75歲,專業(yè)人員的平均年齡為39.53歲,公司白領(lǐng)的平均年齡為37.8歲,不同職業(yè)客戶的平均年齡差異比較明顯。此外,在Hadoop集群會顯示SQL語句的具體執(zhí)行過程以及運行時間,集群總計花費了3秒170毫秒,如圖2-14所示。圖2-14Hadoop集群執(zhí)行過程OracleSQLDeveloperOracle SQL 支持常見的數(shù)據(jù)庫類型,包括MySQL、Oracle、DB2、MSSQL、Hive等數(shù)據(jù)庫,前提是要導(dǎo)入相應(yīng)數(shù)據(jù)庫的JAR包,而且是免費的,主要難點是下載和配置OracleSQLDeveloper和Hive的JAR包,具體步驟如下:下載和安裝OracleSQLDeveloper。首先需要到Oracle官網(wǎng)下載OracleSQLDeveloper,下載之前需要注冊O(shè)racle賬戶。準(zhǔn)備連接的JAR包。使用OracleSQLDeveloper連接Hive之前,需要找到集群Hive對應(yīng)版本JDBC連接的JAR包,由于集群的Hive版本是ApacheHive1.2.2,因此需要的JAR包如圖2-15所示。準(zhǔn)備工作完成后,將連接Hive需要的JAR包上傳到OracleSQLDeveloper→“工具”→“首選項”→“數(shù)據(jù)庫”→“第三方JDBC驅(qū)動程序”下,如圖2-16所示。圖2-15需要的JAR包圖2-16第三方JDBC驅(qū)動程序配置OracleSQLDeveloper。關(guān)閉并重啟OracleSQLDeveloper,重啟后新建Hive連接,如圖2-17所示,如果出現(xiàn)Hive選項,就證明配置成功,如圖2-18所示。圖2-17新建連接圖2-18Hive連接界面配置相關(guān)連接參數(shù),包括連接名、用戶名、密碼、主機名、端口、數(shù)據(jù)庫和驅(qū)動程序,如圖2-19所示。圖2-19配置連接參數(shù)此外,還需要配置Hive的連接參數(shù),單擊“連接參數(shù)”后的“添加“按鈕,彈出“添加參數(shù)”對話框,如圖2-20所示。圖2-20配置連接類型參數(shù)目前HiveServer 安全認(rèn)證方式:NOSASL、KERBEROS、LDAP、PAM、CUSTOM等。由于我們的集群權(quán)限設(shè)置的是NOSASL,因此AuthMech的參數(shù)需要設(shè)置為0,如圖2-21所示。圖2-21配置連接集群權(quán)限測試配置是否正常。單擊“保存”按鈕,軟件將保存連接的配置,如圖2-22示。注意在測試之前需要開啟Hadoop集群以及HiveServer2。圖2-22保存連接我們還可以單擊“測試”按鈕,檢查是否可以正常連接Hive,如果彈出如圖2-23所示的對話框,就說明可以正常連接,否則需要重新配置連接過程。圖2-23測試連接不同教育背景客戶平均年齡分布。在圖2-24中左側(cè)單擊配置好的Hive接成功后,我們可以在連接下查看數(shù)據(jù)庫和數(shù)據(jù)庫中的表。圖2-24查看數(shù)據(jù)庫和表我們可以在界面中輸入想要執(zhí)行的語句,例如要統(tǒng)計客戶中不同教育背景的平均年齡分布,SQL語句為“selecteducation,round(avg(age),2)asavg_custfromcustomersgroupbyeducation;”,SQL語句執(zhí)行結(jié)果如圖2-25所示。圖2-25執(zhí)行SQL語句從結(jié)果可以看出:初中及以下的平均年齡為45.87歲,高中的平均年齡為42.07歲,本科的平均年齡為39.93歲,碩士及以上的平均年齡為39.83歲,大專的平均年齡為39.53歲,不同教育背景客戶的平均年齡差異比較明顯。DbVisualizerDbVisualizer是基于JDBC的跨平臺數(shù)據(jù)庫操作工具,可以快速連接需要的數(shù)據(jù)庫,包括MySQL、Oracle、DB2、MSSQL、Hive等數(shù)據(jù)庫,連接Hive的具體步驟如下:DbVisualizer。我們可以到DbVisualizer的官網(wǎng)下載,地址是\h/,這里下載的是DbVisualizer10.0版本,如圖2-26所示。具體的安裝步驟比較簡單,選擇默認(rèn)安裝即可,這里不進(jìn)行詳細(xì)介紹。圖2-26下載DbVisualizerJAR包。在DbVisualizer的安裝目錄下有一個專門存放驅(qū)動的jdbc文件夾,在該文件夾下新建hive文件夾,如圖2-27所示。圖2-27新建hive文件夾復(fù)制Hadoop集群的相關(guān)JAR包文件到新建的hive文件夾中,具體的包如圖2-28所示。圖2-28添加依賴的包圖2-28中的JAR包分別位于以下文件夾中:hadoop-2.5.2/share/hadoop/common/hadoop-common-2.7.5.jarhadoop-2.5.2/share/hadoop/common/lib/apache-hive-1.2.2-bin/lib。打開DbVisualizer,此時會自動加載剛才添加的JAR包,也可以在Tools/DriverManager中配置,如圖2-29所示。圖2-29加載依賴的包加載Hive的JAR包結(jié)果如圖2-30所示,可以根據(jù)需要進(jìn)行核查和修改等。圖2-30核查依賴的包DbVisualizer,然后重新打開DbVisualizer,彈出NewConnectionWizard對話框,如圖2-31所示。圖2-31添加新的連接輸入連接的名稱,再單擊Next按鈕,彈出選擇數(shù)據(jù)庫驅(qū)動界面,這里我們選擇Hive,單擊Next按鈕,如圖2-32所示。圖2-32選擇連接名在Settings Format下拉框中選擇Database URL,這個比較重要,否則無法正常連接Hive,如圖2-33所示。圖2-33選擇連接方式然后,在DatabaseURL中輸入“jdbc:hive2://:10000/sales;auth=noSasl”,分別在DatabaseUserid和DatabasePassword中輸入賬戶和密碼,如圖2-34所示。圖2-34配置連接參數(shù)不同性別客戶平均年齡分布。單擊圖2-34中的Finish按鈕,如果彈出如圖所示的界面,就說明正常連接Hive,該界面顯示Hadoop集群中的數(shù)據(jù)庫和表。圖2-35查看數(shù)據(jù)庫和表我們可以在界面中輸入想要執(zhí)行的語句,例如要統(tǒng)計不同性別客戶的平均年齡分布,SQL語句為“selectgender,round(avg(age),2)asavg_custfromcustomersgroupbygender;”,SQL語句執(zhí)行結(jié)果如圖2-36所示。圖2-36執(zhí)行SQL語句從結(jié)果可以看出:男性客戶的平均年齡為41.76歲,女性客戶的平均年齡為41.57歲,不同類型客戶的平均年齡差異不是很明顯。SQuirrelSQLClientSQuirrelSQLClient是一個用Java寫的數(shù)據(jù)庫客戶端工具,它通過一個統(tǒng)一的用戶界面來操作MySQL、MSSQL、Hive等支持JDBC訪問的數(shù)據(jù)庫,具體連接Hive的步驟如下:下載和安裝SQuirrel SQL Client。軟件可以直接從官網(wǎng)下載\h,截至2019年8月,最新版本為3.9.1,單擊DownloadSQuirreLSQLClient鏈接進(jìn)行下載,如圖2-37所示。圖2-37下載SQuirrelSQLClientSQuirreLSQLClient有安裝版本和免安裝版本,我們這里選擇的是免安裝版本,單擊PlainzipsthelatestreleaseforWindows/Linux/MacOSX/others鏈接進(jìn)行下載,如圖2-38所示。圖2-38選擇免安裝版本然后,選擇squirrelsql-3.9.1-optional.zip,該版本可以根據(jù)需要添加數(shù)據(jù)庫的驅(qū)動擴展,如圖2-39所示。圖2-39選擇驅(qū)動可擴展版本下載完成后,解壓該文件,在文件夾中雙擊squirrel-sql.bat,第一次打開SQuirreLSQLClient,界面是空白的,如圖2-40所示。圖2-40打開SQuirreLSQLClient準(zhǔn)備連接的JAR包。在SQuirrel的安裝目錄下新建hive文件夾,如圖2-41所示。圖2-41新建hive文件夾復(fù)制Hadoop集群的相關(guān)JAR包到新建的hive文件夾中,具體的包如圖2-42所示。圖2-42配置連接JAR包圖2-42中的JAR包分別位于以下文件夾中:hadoop-2.5.2/share/hadoop/common/hadoop-common-2.7.5.jarhadoop-2.5.2/share/hadoop/common/lib/apache-hive-1.2.2-bin/lib配置SQuirrel SQL 。連接Hive數(shù)據(jù)庫,首先配置數(shù)據(jù)庫連接的驅(qū)動類型,選擇界面左側(cè)的Drivers,然后單擊“+”按鈕,如圖2-43所示。圖2-43配置數(shù)據(jù)庫驅(qū)動類型在配置界面,Name可以隨意填寫,這里輸入“hive”,ExampleURL是連接集群的重要信息,根據(jù)實際情況填寫,這里輸入“jdbc:hive2://:10000/sales;auth=noSasl”,即通過JDBC連接HiveServer2,后面是服務(wù)器地址、端口、數(shù)據(jù)庫及授權(quán)方式,WebsiteURL可以不用填寫。然后選擇Hive連接所需要的JAR包,切換至ExtraClassPath選項卡,再單擊Add按鈕,如圖2-44所示。圖2-44配置數(shù)據(jù)庫參數(shù)打開SQuirrel安裝目錄下新建的hive文件夾,選擇Hive連接所需要的JAR包,然后單擊“打開”按鈕,如圖2-45所示。圖2-45選擇連接的JAR包在Class 輸入“org.apache.hive.jdbc.HiveDriver”,然后單擊OK按鈕,如圖2-46所示,Hive驅(qū)動程序的配置過程到此結(jié)束。圖2-46配置類名測試配置是否正常。配置完成后,需要測試配置是否正確,選擇界面左側(cè)的Aliases,單擊“+”按鈕,如圖2-47所示。圖2-47測試配置是否正確在彈出的連接對話框中,Name即連接的名稱,可以隨意填寫,這里輸入服務(wù)器的地址“”,在Driver下拉框中選擇我們配置好的hive,輸入連接所需要的URL、UserName和Password,最后單擊Test按鈕,彈出連接信息對話框,單擊Connect按鈕,如果彈出Connectionsuccessful,就說明成功連接Hive,如圖2-48所示。圖2-48配置連接參數(shù)不同類型客戶平均年齡分布。在圖2-49左側(cè)單擊配置好的Hive后,可以在Objects下查看數(shù)據(jù)庫和數(shù)據(jù)庫中的表。圖2-49查看數(shù)據(jù)庫和表布,SQL語句為“selectcustcat,round(avg(age),2)asavg_custfromcustomersgroupbycustcat;”,SQL語句執(zhí)行結(jié)果如圖2-50所示。圖2-50執(zhí)行SQL語句從結(jié)果可以看出:一般價值客戶的平均年齡為42.56歲,低價值客戶的平均年齡為41.56歲,高價值客戶的平均年齡為40.18歲,不同類型客戶的平均年齡差異不是很明顯。此外,在Hadoop集群會顯示SQL語句的具體執(zhí)行過程以及運行時間,集群總計花費了3秒270毫秒,如圖2-51所示。圖2-51Hadoop執(zhí)行過程第3章大數(shù)據(jù)可視化工具本章將通過某上市電商企業(yè)的客戶數(shù)據(jù)、訂單數(shù)據(jù)、股價數(shù)據(jù)詳細(xì)介紹Tableau、Zeppelin和Python三類大數(shù)據(jù)常用可視化工具,包括如何連接到Hive和Spark。TableauTableau簡介Tableau公司成立于2003年,是由斯坦福大學(xué)的3位校友ChristianChabot(首席執(zhí)行官)、ChrisStole(開發(fā)總監(jiān))以及PatHanrahan(首席科學(xué)家)在遠(yuǎn)離硅谷的西雅圖注冊成立的。其中,ChrisStole是計算機博士;PatHanrahan是皮克斯動畫工作室的創(chuàng)始成員之一,曾負(fù)責(zé)視覺特效渲染軟件的開發(fā),兩度獲得奧斯卡最佳科學(xué)技術(shù)獎,至今仍在斯坦福擔(dān)任教授職位,教授計算機圖形課程。Tableau公司主要面向企業(yè)數(shù)據(jù)提供可視化服務(wù),是一家商業(yè)智能軟件提供商。企業(yè)運用Tableau授權(quán)的數(shù)據(jù)可視化軟件對數(shù)據(jù)進(jìn)行處理和展示,不過Tableau的商品并不局限于企業(yè),其他機構(gòu)甚至個人都能很好地運用Tableau軟件進(jìn)行數(shù)據(jù)分析工作。Tableau在搶Tableau系列包含7種工具:TableauDesktop、TableauPrep、TableauOnline、TableauServer、TableauPublic、TableauMobile、TableauReader,其中可以連接Hadoop平臺的工具是TableauDesktop。“所有人都能學(xué)會的業(yè)務(wù)分析工具”是Tableau官方網(wǎng)站上對TableauDesktop的描述。確實,TableauDesktop非常簡單易用,這也是該軟件的最大特點。使用者不需要精通復(fù)雜的編程和統(tǒng)計原理,只需要把數(shù)據(jù)直接拖曳到工作簿中,通過一些簡單的設(shè)置就可以得到想要的可視化圖形。TableauDesktop的學(xué)習(xí)成本很低,使用者可以快速上手,這無疑對日漸追求高效率和成本控制的企業(yè)來說具有巨大吸引力,特別適合日常工作中需要繪制大量報表、經(jīng)常進(jìn)行數(shù)據(jù)分析或需要制作圖表的人使用。簡單、易用并沒有妨礙TableauDesktop擁有強大的性能,它不僅能完成基本的統(tǒng)計預(yù)測和趨勢預(yù)測,還能實現(xiàn)數(shù)據(jù)源的動態(tài)更新。TableauDesktop的開始界面如圖3-1所示。圖3-1TableauDesktop的開始界面TableauDesktop不同于SPSS,SPSS作為統(tǒng)計分析軟件,比較偏重于統(tǒng)計分析,使用者需要有一定的數(shù)理統(tǒng)計基礎(chǔ),雖然功能強大且操作簡單、友好,但輸出的圖表與辦公軟件的兼容性及交互方面有所欠缺。TableauDesktop是一款專業(yè)的數(shù)據(jù)可視化軟件,用來輔助人們進(jìn)行視覺化思考,并沒有SPSS強大的統(tǒng)計分析功能??傊焖?、易用、可視化是TableauDesktop最大的特點,能夠滿足大多數(shù)企業(yè)、政府機構(gòu)數(shù)據(jù)分析和展示的需要,以及部分大學(xué)、研究機構(gòu)可視化項目的要求,而且特別適合企業(yè)使用,畢竟Tableau自己的定位是業(yè)務(wù)分析和商業(yè)智能。在簡單、易用的同時,TableauDesktop極其高效,數(shù)據(jù)引擎的速度極快,處理上億行數(shù)據(jù)只需幾秒就可以得到結(jié)果,用其繪制報表的速度也比程序員制作傳統(tǒng)報表快10倍以上。Tableau連接HiveTableau連接Hadoop集群的方法與MSPowerBI類似,驅(qū)動程序可以通用。下面我們通過分析不同類型客戶的平均年齡的案例詳細(xì)介紹如何通過Tableau連接Hive,并對集群中的數(shù)據(jù)表進(jìn)行可視化分析,具體步驟如下:打開TableauDesktop軟件,然后找到Hive的對應(yīng)連接接口,這里我們選擇“更多”下的HortonworksHadoopHive選項,如圖3-2所示。圖3-2選擇數(shù)據(jù)源在彈出的界面中輸入Hadoop錄信息包括身份驗證方式、傳輸方式、用戶名和密碼等,然后單擊“登錄”按鈕,如圖3-3所示。圖3-3輸入連接參數(shù)的數(shù)據(jù)源界面,需要選擇架構(gòu)(數(shù)據(jù)庫),在搜索框中輸入“sales”,這是我們需要分析的數(shù)據(jù)所在的數(shù)據(jù)庫名,然后單擊界面右側(cè)的“搜索”按鈕,并選擇合適的匹配模式,這里選擇“精確”單選按鈕,如圖3-4所示。圖3-4選擇架構(gòu)分析客戶表,因此輸入“customers”,然后單擊右側(cè)的“搜索”按鈕,并選擇合適的匹配模式,這里選擇“精確”單選按鈕,如圖3-5所示。圖3-5搜索需要連接的表在搜索框下方將會顯示customers續(xù)可視化分析做準(zhǔn)備,如圖3-6所示。圖3-6拖曳需要連接的表查看界面右下方的customers面左下方的“工作表1”選項,進(jìn)入可視化視圖的制作界面,如圖3-7所示。圖3-7查看需要連接的表字段拖曳到“列”功能區(qū),將平均值(age)字段拖曳到“行”功能區(qū),度量類型選擇“平均值”,注意其默認(rèn)類型是“總和”,如圖3-8所示。圖3-8設(shè)置可視化字段最后,對視圖進(jìn)行適當(dāng)?shù)恼{(diào)整,例如顏色、標(biāo)簽、標(biāo)題等,最終的效果如圖9所示。圖3-9調(diào)整可視化視圖從上面制作的條形圖可以看出:一般價值客戶的平均年齡為42.56歲,低價值客戶的平均年齡為41.56歲,高價值客戶的平均年齡為40.18歲,不同價值類型客戶的平均年齡沒有明顯的差異。Tableau連接SparkTableau連接Spark的方法與MSPowerBI類似,驅(qū)動程序可以通用。下面我們通過分析企業(yè)現(xiàn)有客戶的職業(yè)類型案例詳細(xì)介紹如何通過Tableau連接Spark,并對集群中的數(shù)據(jù)表進(jìn)行可視化分析,具體步驟如下:打開TableauDesktop軟件,找到Spark對應(yīng)的連接接口,這里我們選擇“更多”下的SparkSQL選項,如圖3-10所示。圖3-10連接數(shù)據(jù)源在彈出的界面中輸入Hadoop錄信息包括Spark類型、身份驗證方式、傳輸方式、用戶名和密碼等,然后單擊“登錄”按鈕,如圖3-11所示。圖3-11輸入連接參數(shù)的數(shù)據(jù)源界面,選擇架構(gòu)(數(shù)據(jù)庫),在搜索框中輸入“sales”,這是我們需要分析的數(shù)據(jù)所在的數(shù)據(jù)庫名,然后單擊右側(cè)的“搜索”按鈕,并選擇合適的匹配模式,這里選擇“精確”單選按鈕,如圖3-12所示。圖3-12選擇架構(gòu)們只需要分析客戶表,因此輸入“customers”,然后單擊右側(cè)的“搜索”按鈕,并選擇合適的匹配模式,這里選擇“精確”單選按鈕,如圖3-13所示。圖3-13搜索需要連接的表在搜索框下方將會顯示customers續(xù)可視化分析做準(zhǔn)備,如圖3-14所示。圖3-14拖曳需要連接的表查看界面右下方的customers面左下方的“工作表1”選項,如圖3-15所示,進(jìn)入可視化視圖的制作界面。圖3-15對查看需要連接的表occupation(客戶職業(yè)類型)字段拖曳到“行”功能區(qū),將“總和(記錄數(shù))”字段拖曳到“列”功能區(qū),注意度量類型選擇“總和”,其默認(rèn)計算類型也是“總和”,如圖3-16所示。圖3-16設(shè)置可視化字段對視圖進(jìn)行適當(dāng)?shù)恼{(diào)整,例如顏色、標(biāo)簽、標(biāo)題等,最終的效果如圖3-17示。圖3-17調(diào)整可視化視圖從上面制作的餅圖可以看出:該商品的客戶類型中,普通工人占到了65.95%,其次技術(shù)工人占10.13%,專業(yè)人員占8.61%,公司白領(lǐng)占8.23%,管理人員占7.09%,職業(yè)類型存在較大的差異。ZeppelinZeppelin簡介ApacheZeppelin是基于Web的筆記本,支持SQL、Scala等數(shù)據(jù)驅(qū)動的交互式數(shù)據(jù)分析和協(xié)作文檔,通過JDBC可以支持PostgreSQL、MySQL、AmazonRedshift、Hive等數(shù)據(jù)庫。在部署方面,支持單個用戶,也支持多用戶,可以滿足數(shù)據(jù)攝取、數(shù)據(jù)發(fā)現(xiàn)、數(shù)據(jù)分析、數(shù)據(jù)可視化與協(xié)作等。Zeppelin中核心的概念是Interpreter,Interpreter是一個插件,允許用戶使用一個指定的語言或數(shù)據(jù)處理器。每一個Interpreter都屬于一個InterpreterGroup,同一個InterpreterGroup的Interpreters可以相互引用,例如SparkSqlInterpreter可以引用SparkInterpreter以獲取SparkContext,因為它們屬于同一個InterpreterGroup。當(dāng)前已經(jīng)實現(xiàn)的Interpreter有Spark解釋器、Python解釋器、SparkSQL解釋器、JDBC、Markdown和Shell等。Interpreter接口中有3個重要的方法:Open、Close、Interpret,另外還有Cancel、getProgress、Completion等方法。Open:初始化部分,只會調(diào)用一次。Close:關(guān)閉釋放資源的接口,只會調(diào)用一次。Interpret:運行一段代碼并返回結(jié)果,同步執(zhí)行方式。Cancel:可選的接口,用于結(jié)束interpret方法。getProgress:用于獲取interpret的百分比進(jìn)度。Completion:基于游標(biāo)位置獲取結(jié)束列表,通過這個接口可以實現(xiàn)自動結(jié)束。此外,Zeppelin也存在一定的不足,優(yōu)點和缺點主要如下:優(yōu)點:提供restful和webSocket兩種接口方式。使用Spark解釋器,進(jìn)行接口編程,可以自己操作SparkContext。擴展性好,可以方便地自定義解釋器。缺點:沒有提供JAR包的方式運行Spark任務(wù)。只有同步的方式運行程序,等待時間較長。Zeppelin連接Hive利用Zeppelin可以通過Hive來操作Hadoop集群中的數(shù)據(jù)。下面將具體介紹操作步驟。啟動集群和Spark相關(guān)進(jìn)程下面需要啟動集群和Spark的相關(guān)進(jìn)程,主要步驟如下:啟動Hadoop:/home/dong/hadoop-2.5.2/sbin/start-all.sh/home/dong/hadoop-2.5.2/sbin/start-all.sh后臺運行Hive:nohuphive--servicemetastore>metastore.log2>&1&nohuphive--servicemetastore>metastore.log2>&1&啟動Hive的hiveserver2:hive--servicehiveserver2&hive--servicehiveserver2&啟動Zeppelin:/home/dong/zeppelin-0.7.3-bin-all/bin/zeppelin-daemon.shstart/home/dong/zeppelin-0.7.3-bin-all/bin/zeppelin-daemon.shstart查看啟動的進(jìn)程,輸入jps,確認(rèn)已經(jīng)啟動了如圖3-18所示的7個進(jìn)程。圖3-18查看啟動進(jìn)程配置Hive解釋器首先,在瀏覽器中輸入:7080/#/,建議使用谷歌瀏覽器,進(jìn)入集群的Zeppelin登錄頁面,如圖3-19所示。圖3-19登錄頁面然后,單擊界面右上方的Login按鈕,在彈出的Login頁面輸入賬戶名和密碼,如圖3-20所示。圖3-20輸入賬戶名和密碼登錄后的效果如圖3-21所示,通過單擊賬戶下的Interpreter選項,進(jìn)入添加Hive的解釋器界面。圖3-21添加解釋器單擊界面右上方的Create按鈕,如圖3-22所示。圖3-22創(chuàng)建解釋器在創(chuàng)建新的解釋器頁面,在InterpreterName中輸入解釋器的名稱,這里可以輸入hive,Interpretergroup需要選擇jdbc。下面修改JDBC解釋器的配置和添加相應(yīng)的依賴,未配置前的參數(shù)設(shè)置如圖3-23所示。圖3-23未配置前的參數(shù)需要根據(jù)實際Hadoop集群的配置修改JDBC解釋器的配置,尤其要注意default.url,否則無法正常連接集群,配置后的參數(shù)列表如圖3-24所示。圖3-24配置后的參數(shù)此外,還需要添加Hive、Hadoop和MySQL的相應(yīng)依賴,其中Hive和Hadoop必須要與集群的版本一致,MySQL可以不一致,如圖3-25所示。配置結(jié)束后,單擊界面左下方的Save按鈕保存設(shè)置。圖3-25配置相應(yīng)依賴注意注意如果報如果報org.apache.hive.jdbc.HiveDriver的錯誤信息,就需要復(fù)制Hive的lib文件夾下的以hive開頭的JAR包到Zeppelin的lib文件夾下。案例:2019年A公司的股票趨勢分析首先需要在Zeppelin的開始頁面單擊Createnewnote鏈接,進(jìn)入創(chuàng)建筆記的過程,如圖3-26所示。圖3-26創(chuàng)建筆記在NoteName中輸入名稱,這里我們可以輸入“2019年某公司的股票趨勢分析”,然后在解釋器的下拉框中選擇“hive”,再單擊CreateNote按鈕,如圖3-27所示。圖3-27選擇解釋器在空白區(qū)域輸入SQL代碼,注意前面需要添加“%hive”,然后單擊“執(zhí)行”按鈕,或者使用Shift+Enter快捷鍵,如圖3-28所示。圖3-28執(zhí)行SQL語句SQL語句的查詢速度與集群的配置有關(guān),查詢結(jié)果默認(rèn)使用表格形式顯示,我們還可以將結(jié)果導(dǎo)出到本地再進(jìn)行更加深入的分析,如圖3-29所示。圖3-29導(dǎo)出運行結(jié)果Zeppelin的可視化視圖是一些常見的條形圖、餅圖、面積圖和折線圖等,由于股票價格數(shù)據(jù)比較適合使用折線圖展示,因此需要單擊LineChart按鈕,效果如圖3-30所示。圖3-30查看可視化視圖此外,在實際工作中,可視化視圖中經(jīng)常需要進(jìn)行分類展示,Zeppelin有專門的設(shè)置選項,單擊settings按鈕,將需要分組的字段拖曳到Groups框中即可,如圖3-31所示。由于這里沒有分類字段,因此該選項不需要設(shè)置。圖3-31分類展示可視化視圖從股價的走勢圖可以看出:在2019年,該公司的股票價格基本呈現(xiàn)上升趨勢,下半年的股價明顯高于上半年的股價,這可能與公司在2019年6月份宣布收購一家新公司有關(guān)。Zeppelin連接Spark利用Zeppelin可以通過Spark來操作Hadoop集群中的數(shù)據(jù)。下面將具體介紹。啟動集群和Spark相關(guān)進(jìn)程下面需要啟動集群和Hive的相關(guān)進(jìn)程,主要步驟如下:啟動Hadoop:/home/dong/hadoop-2.5.2/sbin/start-all.sh/home/dong/hadoop-2.5.2/sbin/start-all.sh啟動Spark:/home/dong/spark-1.4.0-bin-hadoop2.4/sbin/start-all.sh/home/dong/spark-1.4.0-bin-hadoop2.4/sbin/start-all.sh后臺運行Hive:nohuphive--servicemetastore>metastore.log2>&1&nohuphive--servicemetastore>metastore.log2>&1&啟動Zeppelin:/home/dong/zeppelin-0.7.3-bin-all/bin/zeppelin-daemon.shstart/home/dong/zeppelin-0.7.3-bin-all/bin/zeppelin-daemon.shstart查看啟動的進(jìn)程,輸入jps,確認(rèn)已經(jīng)啟動了如圖3-32所示的9個進(jìn)程。圖3-32查看啟動進(jìn)程配置Spark解釋器配置Spark解釋器的過程與配置Hive解釋器的過程基本相同,也是通過單擊賬戶下的Interpreter選項添加Spark解釋器,如圖3-33所示。圖3-33添加解釋器單擊界面右上方的Create按鈕,如圖3-34所示。圖3-34創(chuàng)建解釋器在創(chuàng)建新的解釋器頁面,在InterpreterName中輸入解釋器的名稱,這里可以輸入spark,Interpretergroup需要選擇spark。然后修改JDBC解釋器配置選項,沒有配置之前的參數(shù)如圖3-35所示。圖3-35未配置前的參數(shù)需要根據(jù)實際Hadoop集群的配置修改JDBC解釋器的配置,尤其要注意master選項的設(shè)置,否則無法正常連接集群,配置后的參數(shù)列表如圖3-36所示。圖3-36配置后的參數(shù)案例:2019年A公司的股票交易量分析首先需要在Zeppelin的開始頁面單擊Createnewnote鏈接,然后進(jìn)入創(chuàng)建筆記界面,如圖3-37所示。圖3-37創(chuàng)建筆記在NoteName中輸入名稱,這里可以輸入“2019年某公司的股票交易量分析”,然后在解釋器的下拉框中選擇spark,再單擊CreateNote按鈕,如圖3-38所示。圖3-38選擇解釋器在空白區(qū)域輸入SQL代碼,注意前面需要添加“%spark.sql”,然后單擊“執(zhí)行”按鈕,或者使用Shift+Enter快捷鍵。SQL語句的查詢速度與集群的配置有關(guān),查詢結(jié)果默認(rèn)使用表格形式顯示,我們還可以將結(jié)果導(dǎo)出到本地再進(jìn)行更加深入的分析,如圖3-39所示。圖3-39導(dǎo)出運行結(jié)果Zeppelin的可視化視圖都是一些比較常見的圖形,如條形圖、餅圖、面積圖、折線圖和散點圖等,由于股票價格數(shù)據(jù)比較適合使用折線圖展示,因此需要單擊Line Chart鈕,效果如圖3-40所示。圖3-40查看可視化視圖從股票交易量的走勢圖可以看出:在2019年,除了12月份外,該公司的股票交易量基本呈現(xiàn)下降趨勢,下半年的交易量明顯低于上半年的交易量,這與前面的股票收盤價走勢分析剛好相反,具體原因還需要結(jié)合公司的經(jīng)營狀況進(jìn)行深入的分析。Python在數(shù)據(jù)可視化中的應(yīng)用Python簡介Python是一門簡單易學(xué)且功能強大的編程語言。它擁有高效的高級數(shù)據(jù)結(jié)構(gòu),并且能夠用簡單而又高效的方式進(jìn)行面向?qū)ο缶幊?。Python擁有優(yōu)雅的語法和動態(tài)類型,再結(jié)合它的解釋性,使其在大多數(shù)平臺的許多領(lǐng)域成為編寫腳本或開發(fā)應(yīng)用程序的理想語言。1989年,為了度過圣誕假期,吉多·范羅蘇姆(GuidovanRossum)開始編寫Python語言編譯器。Python這個名字來自Guido喜愛的電視連續(xù)劇《Monty Python’s FlyingCircus》。他希望新的語言Python能夠滿足他在C和Shell之間創(chuàng)建全功能、易學(xué)、可擴展的語言的愿景。2018年8月,IEEE 發(fā)布了第5屆頂級編程語言交互排行榜:Python衛(wèi)冕成功。2018年,Python與第二名C++拉開差距(兩種語言的交互性排名差距為1.6),C和Java則分據(jù)第三和第四,如圖3-41所示。圖3-41編程語言排行榜雖然Python易于使用,但它卻是一門完整的編程語言,與Shell腳本或批處理文件相比,它為編寫大型程序提供了更多的結(jié)構(gòu)和支持。另一方面,Python提供了比C更多的錯Python語言的主要特點如下:語法簡單:Python的語法非常優(yōu)雅,甚至沒有像其他語言的大括號、分號等特殊符號,代表了一種極簡主義的設(shè)計思想,閱讀Python程序像是在讀英語。編程易學(xué):Python入手非???,學(xué)習(xí)曲線非常低,可以直接通過命令行交互環(huán)境來學(xué)習(xí)Python編程。開源免費:Python具有功能強大的庫,而且由于Python的開源特性,第三方庫也非常多,例如在Web開發(fā)、爬蟲、科學(xué)計算等方面??缙脚_:Python的代碼幾乎不用修改就可以運行在各類平臺上。此外,Python可以用于數(shù)據(jù)分析、搭建網(wǎng)站、開發(fā)游戲、自動化測試等,其在數(shù)據(jù)分析中的應(yīng)用包括以下三個方面:Python編程實現(xiàn):數(shù)據(jù)提取存儲、數(shù)據(jù)預(yù)處理、數(shù)據(jù)清洗。Python網(wǎng)絡(luò)爬蟲:從互聯(lián)網(wǎng)獲取數(shù)據(jù)。第三方庫的使用:數(shù)據(jù)處理、數(shù)據(jù)可視化、建立模型。本文的研究重點是Python的數(shù)據(jù)可視化,包括Matplotlib與Pyecharts兩個第三方庫,但是偶爾也會使用一些其他庫,如Pandas、NumPy等。Python連接HivePython借助impyla包可以連接到Hadoop集群的Hive。下面具體介紹其步驟。首先需要啟動Hadoop集群和Hive的相關(guān)進(jìn)程,主要步驟如下:啟動Hadoop:/home/dong/hadoop-2.5.2/sbin/start-all.sh/home/dong/hadoop-2.5.2/sbin/start-all.sh后臺運行Hive:nohuphive--servicemetastore>metastore.log2>&1&nohuphive--servicemetastore>metastore.log2>&1&啟動Hive的hiveserver2:hive--servicehiveserver2&hive--servicehiveserver2&查看啟動的進(jìn)程,輸入jps,確認(rèn)已經(jīng)啟動了如圖3-42所示的7個進(jìn)程。圖3-42查看啟動的進(jìn)程然后安裝3個包:impyla、thirftpy和thirftpy2,如果安裝包的時候報錯,就需要下載離線安裝包再安裝,注意要和Python版本相匹配。這樣就能成功地安裝PyHive了,測試代碼如下:fromimpala.dbapiimportconnectfromimpala.dbapiimportconnectconn=connect(host='',port=10000,database='sales',auth_mechanism=cur=conn.cursor()cur.execute('select*fromorderswhereorder_date="2019-11-11"')print(cur.fetchall())測試程序執(zhí)行后的結(jié)果如圖3-43所示,展示該產(chǎn)品在2019年11月11日的訂單信息,
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度年福建省高校教師資格證之高等教育心理學(xué)考試題庫
- 2024年度山西省高校教師資格證之高等教育法規(guī)高分通關(guān)題型題庫附解析答案
- 第七章 膳食營養(yǎng)指導(dǎo)與疾病預(yù)防課件
- 二年級數(shù)學(xué)(上)計算題專項練習(xí)匯編
- 保密工作培訓(xùn)心得體會
- 2020屆中考科學(xué)(杭州版)復(fù)習(xí)同步練習(xí)題:第三篇-主題3-第六單元-電流熱效應(yīng)和電功率的測量
- 購買保險欺騙退還本金指導(dǎo)案例
- 高級室內(nèi)裝飾設(shè)計人員理論知識試題求答案(5篇模版)
- 2024年專業(yè)石材安裝服務(wù)協(xié)議模板
- 2024年度德邦速運協(xié)議條款明細(xì)
- 期中測評試卷(1-4單元)(試題)-2024-2025學(xué)年人教版三年級數(shù)學(xué)上冊
- GB/T 15822.1-2024無損檢測磁粉檢測第1部分:總則
- 新質(zhì)生產(chǎn)力解讀課件
- 批發(fā)零售大個體 E204-3批發(fā)和零售業(yè)產(chǎn)業(yè)活動單位(個體經(jīng)營戶)商品銷售和庫存
- 異辛酸鈉合成工藝及建設(shè)項目
- 西電計組課程設(shè)計報告
- 汽車買賣合同工商示范文本
- SC鍍鋅鋼管緊定式連接施工工法(共12頁)
- 梅克爾憩室PPT參考幻燈片
- 動車組火災(zāi)檢測(報警)系統(tǒng)
- 脛腓骨骨折中醫(yī)護(hù)理方案
評論
0/150
提交評論