大數(shù)據(jù)技術(shù)及應(yīng)用基于Python語(yǔ)言嚴(yán)宣輝課后答案_第1頁(yè)
大數(shù)據(jù)技術(shù)及應(yīng)用基于Python語(yǔ)言嚴(yán)宣輝課后答案_第2頁(yè)
大數(shù)據(jù)技術(shù)及應(yīng)用基于Python語(yǔ)言嚴(yán)宣輝課后答案_第3頁(yè)
大數(shù)據(jù)技術(shù)及應(yīng)用基于Python語(yǔ)言嚴(yán)宣輝課后答案_第4頁(yè)
大數(shù)據(jù)技術(shù)及應(yīng)用基于Python語(yǔ)言嚴(yán)宣輝課后答案_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第1章緒論一、選擇題1.在舍恩伯格的《大數(shù)據(jù)時(shí)代:生活、工作與思維的大變革》一書(shū)中指出,大數(shù)據(jù)時(shí)代對(duì)社會(huì)的最大影響就是對(duì)人們思維方式的3種轉(zhuǎn)變,以下哪一項(xiàng)不是該書(shū)中所指出的三種思維變革(D)?全樣而非抽樣效率而非精確相關(guān)而非因果規(guī)律而非規(guī)則2.以下哪種技術(shù)對(duì)大數(shù)據(jù)技術(shù)的發(fā)展起到了基礎(chǔ)支撐作用(B)?數(shù)據(jù)庫(kù)技術(shù)云計(jì)算技術(shù)人工智能技術(shù)物聯(lián)網(wǎng)技術(shù)3.以下哪種項(xiàng)不屬于大數(shù)據(jù)的特點(diǎn)(B)?體量大價(jià)值密度高速度快價(jià)值大4.下面關(guān)于HDFS中SecondaryNameNode描述正確的一項(xiàng)是(C)。它是NameNode的熱備它對(duì)內(nèi)存沒(méi)有要求它的目的是幫助NameNode合并editlog,減少NameNode啟動(dòng)時(shí)間SecondaryNameNode應(yīng)與NameNode部署到一個(gè)節(jié)點(diǎn)5.在HDFS中負(fù)責(zé)保存數(shù)據(jù)的是節(jié)點(diǎn)稱(chēng)為(B)。NameNodeDataNodeNodeManagerSecondaryNameNode二、填空題1.傳統(tǒng)科學(xué)研究的三個(gè)范式是“實(shí)驗(yàn)”->__“理論分析”_->“計(jì)算”,在大數(shù)據(jù)時(shí)代,__“數(shù)據(jù)密集型科學(xué)發(fā)現(xiàn)”___,成為科學(xué)研究的第四范式。2.大數(shù)據(jù)具有體量大(Volume)、__種類(lèi)多(Variety)__、速度快(Velocity)和價(jià)值高(Value)四個(gè)特點(diǎn)。3.大數(shù)據(jù)的構(gòu)成可以分為結(jié)構(gòu)化數(shù)據(jù)、非結(jié)構(gòu)化數(shù)據(jù)和____半結(jié)構(gòu)化___三種類(lèi)型。4.大數(shù)據(jù)的處理流程可以歸納為5個(gè)環(huán)節(jié),它們分別是:數(shù)據(jù)采集、__數(shù)據(jù)預(yù)處理_、大數(shù)據(jù)存儲(chǔ)與管理、大數(shù)據(jù)分析與挖掘和計(jì)算結(jié)果展示等環(huán)節(jié)。5.大數(shù)據(jù)技術(shù)發(fā)展的主要技術(shù)支撐來(lái)自于存儲(chǔ)成本的下降、__計(jì)算速度的提高_(dá)_和人工智能理論與技術(shù)的發(fā)展。三、簡(jiǎn)答題1.簡(jiǎn)述大數(shù)據(jù)帶來(lái)哪些思維方式的變革答:對(duì)于大數(shù)據(jù)時(shí)代帶來(lái)的處理數(shù)據(jù)理念的思維模式轉(zhuǎn)變,有三個(gè)非常重要的思維變革:要全體,不要抽樣:在大數(shù)據(jù)時(shí)代,可以獲取足夠大的數(shù)據(jù)樣本乃至全體數(shù)據(jù)。抽樣采用的不合理會(huì)導(dǎo)致預(yù)測(cè)結(jié)果的偏差,在大數(shù)據(jù)時(shí)代,依靠強(qiáng)大的數(shù)據(jù)處理能力,應(yīng)該去處理所有數(shù)據(jù)。要相關(guān),不要因果:在大數(shù)據(jù)時(shí)代,建立在相關(guān)關(guān)系分析法上面的預(yù)測(cè)是大數(shù)據(jù)的主要思維方法,也就是注重分析事物彼此變化存在的關(guān)聯(lián)度。要效率,允許不精確:由于數(shù)據(jù)的體量巨大,對(duì)全樣本進(jìn)行分析時(shí),講究效率比追求極致精確更恰當(dāng),快速獲得一個(gè)大概的輪廓和發(fā)展脈絡(luò),要比嚴(yán)格的精確性重要得多。2.簡(jiǎn)述大數(shù)據(jù)具哪些核心價(jià)值答:大數(shù)據(jù)的核心價(jià)值在于提供了一種人類(lèi)認(rèn)識(shí)復(fù)雜系統(tǒng)的新思維和新手段,可以幫助人們發(fā)現(xiàn)規(guī)律、預(yù)測(cè)未來(lái)和決策指導(dǎo)。在經(jīng)濟(jì)方面,大數(shù)據(jù)成為推動(dòng)經(jīng)濟(jì)轉(zhuǎn)型發(fā)展的新動(dòng)力;在社會(huì)方面,大數(shù)據(jù)可以提高政府的決策能力和治理能力;在科技方面,大數(shù)據(jù)成為科學(xué)研究的新途徑。3.簡(jiǎn)述大數(shù)據(jù)帶來(lái)哪些技術(shù)上的挑戰(zhàn)答:大數(shù)據(jù)技術(shù)發(fā)展至今,雖然以云計(jì)算為代表的計(jì)算技術(shù)不斷進(jìn)步,但是還存在諸多不足,目前主要有三個(gè)問(wèn)題:數(shù)據(jù)存儲(chǔ)和管理的挑戰(zhàn)、計(jì)算速度的挑戰(zhàn)、數(shù)據(jù)安全的挑戰(zhàn)。第2章大數(shù)據(jù)實(shí)驗(yàn)環(huán)境構(gòu)建一、選擇題1.下列哪個(gè)屬性是hdfs-site.xml中的配置(A)?dfs.replicationfs.defaultFSyarn.resourcemanager.address2.Hadoop-3.1.0版本上NameNode的WebUI默認(rèn)的訪問(wèn)端口是(D)?8080500705009098703、Linux中用于創(chuàng)建目錄的命令是(B)。cdmkdrirmdirpwd4.Linux中用于刪除目錄的命令是(C)。cdmkdrirmdirpwd5.以下哪一種不屬于VMwareWorkstation提供的網(wǎng)絡(luò)模式(D)。橋接模式權(quán)主機(jī)模式NAT模式容器模式二、填空題1.HDFS默認(rèn)的文件備份數(shù)量是3。2.groupaddgroup1命令用于向Linux中增加一個(gè)新的用戶(hù)組group1。3.mvdir1dir2命令用于將Linux的目錄dir1更名為dir2。4.“ssh-keygen-trsa”執(zhí)行后,會(huì)在Linux的/root/.ssh目錄下生成私鑰文件:id_rsa和公鑰文件:id_rsa_pub。5.Linux中擁有最高權(quán)限的用戶(hù)是root。三、簡(jiǎn)答題1.簡(jiǎn)述HDFS集群的組成和NameNode和DataNode的作用。答:NameNode的功能:管理整個(gè)文件系統(tǒng)的名稱(chēng)空間和文件數(shù)據(jù)塊的地址映射,它維護(hù)著整個(gè)文件系統(tǒng)的文件目錄樹(shù)、文件/目錄的元信息和每個(gè)文件對(duì)應(yīng)的數(shù)據(jù)塊列表、接收用戶(hù)的操作請(qǐng)求。DataNode的功能:提供真實(shí)文件數(shù)據(jù)的存儲(chǔ)服務(wù),負(fù)責(zé)文件系統(tǒng)或者客戶(hù)端的讀寫(xiě)操作,在NameNode的調(diào)度下對(duì)數(shù)據(jù)塊進(jìn)行創(chuàng)建、存儲(chǔ)、刪除、備份等操作。2.簡(jiǎn)述Hadoop系統(tǒng)3.0版本與2.0版有什么不同。答:(1)最低Java版本從7升級(jí)到8(2)引入糾刪碼(ErasureCoding):主要解決數(shù)據(jù)量大到一定程度磁盤(pán)空間存儲(chǔ)能力不足的問(wèn)題;(3)重寫(xiě)了Shell腳本,修改了之前版本長(zhǎng)期存在的一些錯(cuò)誤,并提供一些新功能;(4)NameNode(增加了容錯(cuò)性):在Hadoop3中允許用戶(hù)使用多個(gè)備用的NameNode(5)MapReduce引入了一個(gè)NativeMapOutputCollector的本地化(C/C++)實(shí)現(xiàn),對(duì)于shuffle密集的任務(wù),可能提高30%或者更高的性能;(6)DataNode內(nèi)部實(shí)現(xiàn)Balancer:之前的DataNodeBalancer只能實(shí)現(xiàn)DN之間的數(shù)據(jù)平衡,Hadoop3.x實(shí)現(xiàn)了內(nèi)部的數(shù)據(jù)平衡;。(7)重做的后臺(tái)和任務(wù)堆內(nèi)存管理;(8)HDFS實(shí)現(xiàn)服務(wù)器級(jí)別的Federation分流;(9)Yarn的時(shí)間線服務(wù)升級(jí)到V2,Yarn實(shí)現(xiàn)更多種資源類(lèi)型的管理;(10)容量調(diào)度器實(shí)現(xiàn)API級(jí)別的配置;(11)許多服務(wù)的默認(rèn)端口改變了;3.Hadoop系統(tǒng)中Yarn的作用是什么?答:Yarn在Hadoop系統(tǒng)中負(fù)責(zé)資源調(diào)度和任務(wù)管理,其主要作用是“資源管理”,“節(jié)點(diǎn)管理”和“應(yīng)用程序調(diào)度”,它包括四個(gè)組件:(1)ResourceManager1)處理客戶(hù)端請(qǐng)求;2)監(jiān)控NodeManager,對(duì)各個(gè)NodeManager上的資源進(jìn)行統(tǒng)一管理和調(diào)度;3)給ApplicationMaster分配空閑的Container運(yùn)行并監(jiān)控其運(yùn)行狀態(tài)(Scheduler來(lái)完成);主要組成:資源調(diào)度器(Sheduler)和應(yīng)用程序管理器(ApplicationManager)。(2)NodeManager1)負(fù)責(zé)管理單個(gè)節(jié)點(diǎn)上的資源;2)定時(shí)的向RM匯報(bào)本節(jié)點(diǎn)上的資源使用情況和Container的運(yùn)行狀態(tài)。(3)ApplicationMaster1)負(fù)責(zé)整個(gè)任務(wù)執(zhí)行的監(jiān)控,可以向RM匯報(bào)任務(wù)執(zhí)行的狀態(tài),重啟失敗任務(wù)等;2)向RM為應(yīng)用程序申請(qǐng)資源并分配給內(nèi)部的任務(wù)。(4)Container可以理解為Yarn中的資源抽象,封裝了某個(gè)節(jié)點(diǎn)上的多維度資源,如內(nèi)存、cpu、硬盤(pán)、網(wǎng)絡(luò)等,AM向RM申請(qǐng)資源時(shí),RM返回的資源就是用Container表示的。第3章大數(shù)據(jù)采集與預(yù)處理一、選擇題1.按產(chǎn)生數(shù)據(jù)的主體來(lái)劃分,大數(shù)據(jù)主要有三個(gè)來(lái)源,它們分別是(B)。信息管理系統(tǒng)的記錄、計(jì)算機(jī)產(chǎn)生的數(shù)據(jù)和對(duì)現(xiàn)實(shí)世界的測(cè)量對(duì)現(xiàn)實(shí)世界的測(cè)量、人類(lèi)的記錄和計(jì)算機(jī)產(chǎn)生的數(shù)據(jù)對(duì)現(xiàn)實(shí)世界的測(cè)量、人類(lèi)的記錄和物聯(lián)網(wǎng)監(jiān)測(cè)的數(shù)據(jù)對(duì)現(xiàn)實(shí)世界的測(cè)量、傳感器采集的數(shù)據(jù)和計(jì)算機(jī)產(chǎn)生的數(shù)據(jù)2.以下哪項(xiàng)處理是屬于數(shù)據(jù)集成要完成的工作(D)。數(shù)據(jù)平滑標(biāo)準(zhǔn)化處理去除噪聲實(shí)體識(shí)別3.以下哪項(xiàng)不屬于數(shù)據(jù)預(yù)處理中去除噪聲的方法(C)。分箱移動(dòng)平均歸一化3σ探測(cè)方法4.假設(shè)有12個(gè)從小到大的有序數(shù)據(jù):5,10,11,13,15,35,50,55,72,92,203,215,使用等寬分箱法(假設(shè)箱寬為30,即每個(gè)箱數(shù)據(jù)之差不超過(guò)30)將它們劃分成四個(gè)箱,92在哪個(gè)箱中(C)。第1個(gè)第2個(gè)第3個(gè)第4個(gè)二、填空題1.網(wǎng)絡(luò)數(shù)據(jù)的采集通??梢苑譃開(kāi)_網(wǎng)頁(yè)內(nèi)容采集___和___網(wǎng)絡(luò)流量采集___兩種類(lèi)型。 2.?dāng)?shù)據(jù)容量單位1GB=___1024*1024=1048576___KB。3.據(jù)預(yù)處理是指在數(shù)據(jù)進(jìn)行分析挖掘之前,對(duì)原始數(shù)據(jù)進(jìn)行變換、清洗與集成等一系列操作。三、簡(jiǎn)答題1、簡(jiǎn)述大數(shù)據(jù)采集主要采用的方法。答:數(shù)據(jù)采集的常用方法:傳感數(shù)據(jù)采集、系統(tǒng)日志采集、網(wǎng)絡(luò)數(shù)據(jù)采集、外包和眾包和數(shù)據(jù)庫(kù)采集等。2、簡(jiǎn)述網(wǎng)絡(luò)爬蟲(chóng)工具Scrapy框架的組成與功能。答:Scrapy框架主要由五大組件組成,它們分別是調(diào)度器(Scheduler)、下載器(Downloader)、爬蟲(chóng)(Spider)、實(shí)體管道(ItemPipeline)和Scrapy引擎(ScrapyEngineer)。3、簡(jiǎn)述歸一化處理和標(biāo)準(zhǔn)化處理的差別。答:它們都是對(duì)數(shù)據(jù)的特征進(jìn)行縮放的方法,作用是使不同量綱的特征處于同一數(shù)值量級(jí),減少方差大的特征的影響,使分析模型更準(zhǔn)確。(1)數(shù)據(jù)歸一化是將數(shù)據(jù)變換為[0,1]或[-1,1]之間的小數(shù),這樣可以把有量綱數(shù)據(jù)轉(zhuǎn)變?yōu)闊o(wú)量綱表示。歸一化方法的優(yōu)點(diǎn)是能保留數(shù)據(jù)的權(quán)重信息;缺點(diǎn)是魯棒性較差(易受異常值的影響,如果有異常大或小的數(shù),則會(huì)將正常數(shù)據(jù)據(jù)“擠”到一起)。(2)標(biāo)準(zhǔn)化不但將數(shù)據(jù)縮放到相同區(qū)間,并且將數(shù)據(jù)轉(zhuǎn)換成標(biāo)準(zhǔn)正態(tài)分布。該方法基于數(shù)據(jù)是服從正態(tài)分布這一隱含假設(shè),只是將數(shù)據(jù)調(diào)整為均值為0,方差為1的標(biāo)準(zhǔn)正態(tài)分布。如果數(shù)據(jù)不滿足這一隱含的假設(shè),則標(biāo)準(zhǔn)化方法會(huì)改變數(shù)據(jù)的分布特性。標(biāo)準(zhǔn)化方法的魯棒性較好;缺點(diǎn)是會(huì)丟失數(shù)據(jù)的權(quán)重信息。四、實(shí)驗(yàn)題【實(shí)驗(yàn)3-1】用Scrapy采集豆瓣讀書(shū)評(píng)分9分以上的圖書(shū)數(shù)據(jù)。豆瓣讀書(shū)的網(wǎng)址為:/doulist/1264675/,要求采集每本圖書(shū)的數(shù)據(jù)包括:書(shū)名、評(píng)分、作者、出版社和出版年份?!緦?shí)驗(yàn)3-2】使用Flume軟件從Linux主機(jī)的特定目錄中采集日志文件,匯總到指定的服務(wù)器并存入Hadoop集群的HDFS文件系統(tǒng)中。(1)任務(wù)要求將Linux主機(jī)Node02和Node03中/usr/local/logs文件夾(假設(shè)不含子文件夾)下的所有*.log文件采集到Node01上,并匯總到Hadoop集群的HDFS文件系統(tǒng)的/flume/logdir目錄中,HDFS中的日志文件名用“年/月/日/時(shí)/分”進(jìn)行命名。(2)數(shù)據(jù)流模型示意圖【實(shí)驗(yàn)3-3】使用Python的sklearn庫(kù)進(jìn)行數(shù)據(jù)預(yù)處理實(shí)驗(yàn)。 (1)從/ml/index.php下載labor數(shù)據(jù)集,對(duì)所有的屬性列(不包括類(lèi)別標(biāo)簽列)進(jìn)行缺失值填充,數(shù)值型屬性采用平均值進(jìn)行填充,類(lèi)屬型屬性采用眾數(shù)填充。 (2)從/ml/index.php下載iris數(shù)據(jù)集(鳶尾花數(shù)據(jù)集),對(duì)所有的屬性列(不包括類(lèi)別標(biāo)簽列)進(jìn)行Z-Score標(biāo)準(zhǔn)化處理。Hadoop分布式文件系統(tǒng)一、簡(jiǎn)答題HDFS和傳統(tǒng)的分布式文件系統(tǒng)相比較,有哪些獨(dú)特的特性?。答:傳統(tǒng)的文件系統(tǒng)在存儲(chǔ)數(shù)據(jù)時(shí)通常只在一臺(tái)主機(jī)上的磁盤(pán)上進(jìn)行存儲(chǔ),如果數(shù)據(jù)量很大,則會(huì)遇到存儲(chǔ)容量限制和讀取速度的瓶頸。HDFS采用分布式的數(shù)據(jù)存儲(chǔ)方式,可以把數(shù)據(jù)存儲(chǔ)在單個(gè)集群中的數(shù)百個(gè)節(jié)點(diǎn),因此克服了單主機(jī)的存儲(chǔ)容量限制。由于HDFS可以保存數(shù)據(jù)的多個(gè)副本,因此具有高容錯(cuò)性,可以克服硬件故障造成的數(shù)據(jù)丟失問(wèn)題。HDFS提供對(duì)應(yīng)用程序數(shù)據(jù)的高吞吐量訪問(wèn),適合處理超大數(shù)據(jù)集的應(yīng)用程序。此外,HDFS還具有異構(gòu)硬件的兼容性和軟件平臺(tái)的可移植性。NameNode和DataNode的功能分別是什么?。答:HDFS集群有兩類(lèi)節(jié)點(diǎn)以管理節(jié)點(diǎn)-工作節(jié)點(diǎn)模式運(yùn)行,即一個(gè)Namenode(管理節(jié)點(diǎn))和多個(gè)Datanode(工作節(jié)點(diǎn))。Namenode管理文件系統(tǒng)的命名空間,它維護(hù)著文件系統(tǒng)樹(shù)及整棵樹(shù)內(nèi)的所有文件和目錄。NameNode執(zhí)行文件系統(tǒng)命名空間的相關(guān)操作,如打開(kāi)、關(guān)閉和重命名文件和目錄等;除此之外,它還確定文件塊到數(shù)據(jù)節(jié)點(diǎn)的映射。DataNode負(fù)責(zé)具體的數(shù)據(jù)存儲(chǔ)和讀寫(xiě)工作。DataNode負(fù)責(zé)處理來(lái)自文件系統(tǒng)客戶(hù)端的讀寫(xiě)請(qǐng)求,它將客戶(hù)端發(fā)來(lái)的數(shù)據(jù)以block(塊)的形式進(jìn)行存儲(chǔ),并根據(jù)NameNode的指令執(zhí)行塊創(chuàng)建、刪除和復(fù)制。Hadoop平臺(tái)需要高可靠計(jì)算機(jī)保證其可靠性,這種說(shuō)法對(duì)嗎,請(qǐng)分析具體原因。答:這種說(shuō)法不正確。Hadoop平臺(tái)被設(shè)計(jì)用于部署在低成本硬件上,通過(guò)集群中幾百上千臺(tái)廉價(jià)的普通服務(wù)器的協(xié)同工作,使得Hadoop集群具有高容錯(cuò)性,可以克服單點(diǎn)故障造成的后果。請(qǐng)簡(jiǎn)要敘述Hadoop1.0和Hadoop2.0的區(qū)別。答:Hadoop1.0的JobTracker在應(yīng)用中逐漸暴露出一些問(wèn)題:首先,JobTracker是單點(diǎn)的,必然存在單點(diǎn)故障問(wèn)題;其次,因?yàn)镴obTracker集成了資源管理和任務(wù)調(diào)度,存在壓力過(guò)大的問(wèn)題;最后,若有新的非MapReduce計(jì)算框架,則不能復(fù)用資源管理,新的計(jì)算框架必將各自實(shí)現(xiàn)自己的資源管理,從而造成資源競(jìng)爭(zhēng)。Hadoop2.0為克服Hadoop1.0中的不足進(jìn)行了下面改進(jìn):

1、針對(duì)Hadoop1.0單NameNode制約HDFS的擴(kuò)展性問(wèn)題,提出HDFSFederation,它讓多個(gè)NameNode分管不同的目錄進(jìn)而實(shí)現(xiàn)訪問(wèn)隔離和橫向擴(kuò)展,同時(shí)徹底解決了NameNode單點(diǎn)故障問(wèn)題;

2、針對(duì)Hadoop1.0中的MapReduce在擴(kuò)展性和多框架支持等方面的不足,它將JobTracker中的資源管理和作業(yè)控制分開(kāi),分別由ResourceManager(負(fù)責(zé)所有應(yīng)用程序的資源分配)和ApplicationMaster(負(fù)責(zé)管理一個(gè)應(yīng)用程序)實(shí)現(xiàn),即引入了資源管理框架Yarn。

3、在Hadoop2.0中引入了全新的資源調(diào)度方案Yarn,Yarn將資源管理和任務(wù)調(diào)度分開(kāi),解耦了JobTracker的功能。Yarn與MapReduce無(wú)關(guān),Yarn是獨(dú)立的資源層,除了支持MapReduce計(jì)算框架,還支持Spark等其他計(jì)算模型,從而增強(qiáng)了資源的統(tǒng)一管理和調(diào)度。機(jī)架(rack)在Hadoop中是一個(gè)非常重要的概念,請(qǐng)簡(jiǎn)要敘述他可能在那些方面對(duì)系統(tǒng)的部署和使用造成影響。答:Hadoop集群都會(huì)跨好幾個(gè)機(jī)架,由多個(gè)機(jī)架上的機(jī)器共同組成一個(gè)分布式集群。機(jī)架內(nèi)的機(jī)器之間的網(wǎng)絡(luò)速度通常都會(huì)高于跨機(jī)架機(jī)器之間的網(wǎng)絡(luò)速度,并且機(jī)架之間機(jī)器的網(wǎng)絡(luò)通信通常受到上層交換機(jī)間網(wǎng)絡(luò)帶寬的限制。HDFS將每一個(gè)文件的數(shù)據(jù)進(jìn)行分塊存儲(chǔ),同時(shí)每一個(gè)數(shù)據(jù)塊又保存有多個(gè)副本,這些數(shù)據(jù)塊副本分布在不同的機(jī)器節(jié)點(diǎn)上,這種數(shù)據(jù)分塊存儲(chǔ)+副本的策略是HDFS保證可靠性和性能的關(guān)鍵。HDFS采用一種稱(chēng)為機(jī)架感知的策略來(lái)改進(jìn)數(shù)據(jù)的可靠性、可用性和網(wǎng)絡(luò)帶寬的利用率。通過(guò)一個(gè)機(jī)架感知的過(guò)程,NameNode可以確定每一個(gè)DataNode所屬的機(jī)架id。一個(gè)簡(jiǎn)單但沒(méi)有優(yōu)化的策略就是將副本存放在不同的機(jī)架上,這樣可以防止當(dāng)整個(gè)機(jī)架失效時(shí)數(shù)據(jù)的丟失,并且允許讀數(shù)據(jù)的時(shí)候充分利用多個(gè)機(jī)架的帶寬。這種策略設(shè)置可以將副本均勻分布在集群中,有利于當(dāng)組件失效的情況下的均勻負(fù)載,但是,因?yàn)檫@種策略的一個(gè)寫(xiě)操作需要傳輸?shù)蕉鄠€(gè)機(jī)架,這增加了寫(xiě)的代價(jià)。在大多數(shù)情況下,副本系數(shù)是3,HDFS的存放策略是將一個(gè)副本存放在本地機(jī)架節(jié)點(diǎn)上,一個(gè)副本存放在同一個(gè)機(jī)架的另一個(gè)節(jié)點(diǎn)上,最后一個(gè)副本放在不同機(jī)架的節(jié)點(diǎn)上。這種策略減少了機(jī)架間的數(shù)據(jù)傳輸,提高了寫(xiě)操作的效率。機(jī)架的錯(cuò)誤遠(yuǎn)遠(yuǎn)比節(jié)點(diǎn)的錯(cuò)誤少,所以這種策略不會(huì)影響到數(shù)據(jù)的可靠性和可用性。與此同時(shí),因?yàn)閿?shù)據(jù)塊只存放在兩個(gè)不同的機(jī)架上,所以此策略減少了讀取數(shù)據(jù)時(shí)需要的網(wǎng)絡(luò)傳輸總帶寬。在這種策略下,副本并不是均勻的分布在不同的機(jī)架上:三分之一的副本在一個(gè)節(jié)點(diǎn)上,三分之二的副本在一個(gè)機(jī)架上,其它副本均勻分布在剩下的機(jī)架中,這種策略在不損害數(shù)據(jù)可靠性和讀取性能的情況下改進(jìn)了寫(xiě)的性能。請(qǐng)簡(jiǎn)要敘述HDFS文件數(shù)據(jù)讀取的基本步驟。答:參考4.2.2節(jié)小明說(shuō)HDFS的NameNode會(huì)在往HDFS中寫(xiě)入數(shù)據(jù)時(shí)承擔(dān)很大的負(fù)擔(dān),那么這種說(shuō)法是否正確,請(qǐng)幫忙進(jìn)一步分析。答:這種說(shuō)法不正確。在HDFS系統(tǒng)中,NameNode管理HDFS文件系統(tǒng)的命名空間,它維護(hù)著文件系統(tǒng)樹(shù)及整棵樹(shù)內(nèi)的所有文件和目錄,但是NameNode并不負(fù)責(zé)存儲(chǔ)具體的數(shù)據(jù)內(nèi)容。數(shù)據(jù)是以文件的形式存儲(chǔ)在分布式DataNode集群上的,所以NameNode在HDFS中寫(xiě)入數(shù)據(jù)時(shí)并不會(huì)承擔(dān)很大的負(fù)擔(dān)。HBase基礎(chǔ)與應(yīng)用一、簡(jiǎn)答題請(qǐng)簡(jiǎn)要敘述HBase與一般關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)的區(qū)別。答:HBase是一個(gè)分布式的數(shù)據(jù)庫(kù)系統(tǒng),可擴(kuò)展性強(qiáng),可通過(guò)增加廉價(jià)的服務(wù)器來(lái)橫向擴(kuò)展,增加計(jì)算和存儲(chǔ)能力;一般的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)是非分布式的,可擴(kuò)展性較弱,不適合大數(shù)據(jù)的存儲(chǔ)和計(jì)算;.表HBase數(shù)據(jù)模型與關(guān)系型數(shù)據(jù)庫(kù)對(duì)比關(guān)系型數(shù)據(jù)庫(kù)HBase數(shù)據(jù)模型關(guān)系數(shù)據(jù)模型鍵值對(duì)數(shù)據(jù)類(lèi)型豐富的數(shù)據(jù)類(lèi)型簡(jiǎn)單的數(shù)據(jù)類(lèi)型Bytes數(shù)據(jù)操作豐富的數(shù)據(jù)操作,含多表連接操作;可以進(jìn)行數(shù)據(jù)更新操作只有簡(jiǎn)單的單表增、刪、查等操作;沒(méi)有更新操作,只能插入新鍵值對(duì)版本存儲(chǔ)模式基于行存儲(chǔ)的基于列存儲(chǔ),多文件,列族文件分離數(shù)據(jù)索引可以包含復(fù)雜索引;只有一個(gè)鍵值(行鍵)索引;可伸縮性橫向擴(kuò)展難,特別在數(shù)據(jù)量大時(shí);縱向擴(kuò)展有限具有良好的可伸縮性存儲(chǔ)容量PBGB、TB結(jié)合你的認(rèn)知,說(shuō)明至少3中HBase的應(yīng)用場(chǎng)景。答:(1)時(shí)空數(shù)據(jù):主要是軌跡、氣象網(wǎng)格之類(lèi),比如XX打車(chē)的軌跡數(shù)據(jù)主要存在HBase之中,另外大數(shù)據(jù)量的車(chē)聯(lián)網(wǎng)企業(yè),數(shù)據(jù)也都是存在HBase中。比如互聯(lián)網(wǎng)出行,智慧物流與外賣(mài)遞送,傳感網(wǎng)與實(shí)時(shí)GIS等場(chǎng)景。(2)推薦畫(huà)像:別是用戶(hù)的畫(huà)像,是一個(gè)比較大的稀疏矩陣,用戶(hù)畫(huà)像有用戶(hù)數(shù)據(jù)量大,用戶(hù)標(biāo)簽多,標(biāo)簽統(tǒng)計(jì)維度不確定等特點(diǎn),適合HBase特性的發(fā)揮。(3)消息/訂單:在電子商務(wù)、電信領(lǐng)域、銀行領(lǐng)域,不少的訂單查詢(xún)底層的存儲(chǔ),另外不少通信、消息同步的應(yīng)用構(gòu)建在HBase之上。對(duì)比關(guān)系數(shù)據(jù)模型,簡(jiǎn)要說(shuō)明HBase的數(shù)據(jù)模型與之不同之處。答:關(guān)系數(shù)據(jù)模型可以理解為一種二維表格,表格之間存在連接關(guān)系,其邏輯模型為:列1列2列3記錄1記錄2記錄3HBase是一個(gè)是基于列的模式,表之間沒(méi)有連接關(guān)系,其邏輯模型為:列簇1列簇2列簇3Rowkey1列1:……列N列1:……列N列1:……列NRowkey2列1:……列N列1:……列N列1:……列NRowkey3列1:……列N列1:……列N列1:……列N物理模型為:RowkeyColumnFamilyColumnQualifierTimeStampTypeValuerow_key1CF1C1T1PutV1為了定位一個(gè)HBase的單元數(shù)據(jù),需要從哪幾個(gè)維度才能確定。答:由{rowkey,columnFamily:columnqualifier,timestamp}確定唯一的單元。創(chuàng)建命名空間ns1下的數(shù)據(jù)表tbl1,該表包含列族cf1,cf2,請(qǐng)實(shí)現(xiàn)該建表命令。答: create_namespace'ns1' 請(qǐng)簡(jiǎn)要敘述Jython與Python的區(qū)別答:Jython是一種完整的語(yǔ)言,而不是一個(gè)Java翻譯器或僅僅是一個(gè)Python編譯器,它是一個(gè)利用Java語(yǔ)言實(shí)現(xiàn)的Python語(yǔ)言。Jython包含很多從CPython(Python)中繼承的模塊庫(kù),同時(shí)也提供了所有的Java類(lèi)庫(kù),從而使得Jython可以方便地使用所有Java的類(lèi)庫(kù)。第4章Hive基礎(chǔ)與應(yīng)用一、簡(jiǎn)答題請(qǐng)簡(jiǎn)要敘述數(shù)據(jù)庫(kù)與數(shù)據(jù)倉(cāng)庫(kù)的區(qū)別。答:普通關(guān)系型數(shù)據(jù)庫(kù)主要應(yīng)用于在線事務(wù)處理,其數(shù)據(jù)的實(shí)時(shí)性要求高。與之不同,數(shù)據(jù)倉(cāng)庫(kù)(DataWarehouse)則是一個(gè)面向主題的、集成的、相對(duì)穩(wěn)定的、能夠反映歷史變化的數(shù)據(jù)集合,主要用于支持管理決策。若公司A打算構(gòu)造一個(gè)網(wǎng)上商城,那么他該選擇Hive還是Mysql作為數(shù)據(jù)存儲(chǔ)工具,說(shuō)明具體原因。答:可以結(jié)合使用Hive和Mysql網(wǎng)上商城的實(shí)時(shí)事務(wù)處理應(yīng)該使用Mysql;對(duì)網(wǎng)上商場(chǎng)的歷史交易數(shù)據(jù)進(jìn)行統(tǒng)計(jì)、分析和管理決策可以使用Hive。簡(jiǎn)要敘述Hive的Table的概念。答:Hive表(Table)的概念與關(guān)系型數(shù)據(jù)庫(kù)中表的概念具有相似之處,表是具有相同模式的同構(gòu)數(shù)據(jù)單位,在邏輯上由存儲(chǔ)的數(shù)據(jù)和描述表中數(shù)據(jù)類(lèi)型的相關(guān)元數(shù)據(jù)組成。Hive的表分為“外部表”和“內(nèi)部表(托管表)”。內(nèi)部表,也叫托管表,是Hive在創(chuàng)建表時(shí)的默認(rèn)表。內(nèi)部表的生命周期時(shí)由hive控制的,默認(rèn)情況下數(shù)據(jù)都存放在/user/hive/warehouse/下面。內(nèi)部表被刪除后,表的元數(shù)據(jù)和表數(shù)據(jù)都從HDFS中完全刪除。外部表,創(chuàng)建表的SQL語(yǔ)句中加上external,創(chuàng)建的就是外部表。外部表的數(shù)據(jù)生命周期不受Hive控制,表中的數(shù)據(jù)在刪除后仍然在HDFS中。優(yōu)點(diǎn):外部表的數(shù)據(jù),可以同時(shí)作為多個(gè)外部表的數(shù)據(jù)源共享使用。適用于恢復(fù)誤刪的數(shù)據(jù)困難的情況,例如:實(shí)時(shí)采集的數(shù)據(jù)。分區(qū)會(huì)讓數(shù)據(jù)分開(kāi)不同的文件進(jìn)行存儲(chǔ),請(qǐng)簡(jiǎn)要敘述分區(qū)的作用。答:分區(qū)的作用是可以提高查詢(xún)速度和優(yōu)化數(shù)據(jù)管理,縮小查詢(xún)范圍,加快數(shù)據(jù)的檢索速度和對(duì)數(shù)據(jù)按照一定的規(guī)格和條件進(jìn)行管理。一個(gè)數(shù)據(jù)表A(A1,A2,A3),請(qǐng)幫忙用Hive的DDL實(shí)現(xiàn)該表的創(chuàng)建操作。答:createtableA(A1int,A2string,A3string)二、實(shí)驗(yàn)題【實(shí)驗(yàn)6.1】利用Hive構(gòu)建簡(jiǎn)單的數(shù)據(jù)倉(cāng)庫(kù)某大學(xué)要存儲(chǔ)歷年來(lái)所有學(xué)生的選課信息和歷史成績(jī)等信息,他們選擇了用Hive存儲(chǔ)這些歷史信息,現(xiàn)在請(qǐng)你幫忙構(gòu)建一個(gè)簡(jiǎn)單的數(shù)據(jù)倉(cāng)庫(kù)實(shí)現(xiàn)這些數(shù)據(jù)的存儲(chǔ)。他們提出了一些基本信息要求如下:學(xué)生表Student(S,Sname,Sage,Ssex);其中各列含義為:S學(xué)生編號(hào)Sname學(xué)生姓名Sage出生年月Ssex學(xué)生性別課程表

Course(C,Cname,T);其中各列含義為:C課程編號(hào)Cname課程名稱(chēng)T教師編號(hào)教師表

Teacher(T,Tname);其中各列含義為:T教師編號(hào)Tname教師姓名成績(jī)表

SC(S,C,score);其中各列含義為:S學(xué)生編號(hào)C課程編號(hào)score分?jǐn)?shù)現(xiàn)請(qǐng)你完成數(shù)據(jù)倉(cāng)庫(kù)的構(gòu)造,并實(shí)現(xiàn)下面的查詢(xún)要求。按照上述數(shù)據(jù)存儲(chǔ)要求進(jìn)行數(shù)據(jù)倉(cāng)庫(kù)的構(gòu)造;按年級(jí)統(tǒng)計(jì)每屆學(xué)生人數(shù);查詢(xún)“Bill”的選課信息,具體要求包括所選課程名,以及最終成績(jī);查詢(xún)"01"課程歷年來(lái)的選課學(xué)生信息;查詢(xún)平均成績(jī)大于等于60分的同學(xué)的學(xué)生編號(hào)和學(xué)生姓名和平均成績(jī);查詢(xún)所有同學(xué)的學(xué)生編號(hào)、學(xué)生姓名、選課總數(shù)、所有課程的總成績(jī);參考解答:1、創(chuàng)建數(shù)據(jù)庫(kù)和表:createdatabasedb_student;usedb_student;(1)學(xué)生表createtableStudent(Sstring,Snamestring,Sagestring,Ssexstring)ROWFORMATDELIMITEDFIELDSTERMINATEDBY'\t';從.txt中導(dǎo)入數(shù)據(jù): loaddatalocalinpath'/work/data/student.txt'intotabledb_student.Student;student.txt的格式: 2020001 Yan 1999-03-11 M 2021001 Li 2001-11-20 F 2020002 Ma 1999-10-01 M 2021002 Liu 2000-04-07 M2021003 Bill 2001-05-06 F(2)課程表createtableCourse(Cstring,Cnamestring,Tstring)ROWFORMATDELIMITEDFIELDSTERMINATEDBY'\t';insertintoCoursevalues('01','math','t01');(3)教師表

createtableTeacher(Tstring,Tnamestring)ROWFORMATDELIMITEDFIELDSTERMINATEDBY'\t';insertintoTeachervalues('t01','Zhang');(4)成績(jī)表

SCcreatetableSC(Sstring,Cstring,scorefloat)ROWFORMATDELIMITEDFIELDSTERMINATEDBY'\t';insertintoSCvalues('2021003','01',91);insertintoSCvalues('2021001','01',88);2、按年級(jí)統(tǒng)計(jì)每屆學(xué)生人數(shù) selectcount(*)fromstudentgroupbysubstr(S,0,4);3、查詢(xún)“Bill”的選課信息,具體要求包括所選課程名,以及最終成績(jī);selectb.C,b.Cname,a.scorefromSCasajoinCourseasbona.C=b.Cwherea.Sin(selectSfromStudentwhereSname='Bill');4、查詢(xún)"01"課程歷年來(lái)的選課學(xué)生信息;selecta.C,b.S,b.SnamefromSCasaleftjoinStudentasbona.S=b.Swherea.C='01';(用leftjoin的原因是01課程可能沒(méi)有學(xué)生選)5、查詢(xún)平均成績(jī)大于等于60分的同學(xué)的學(xué)生編號(hào)和學(xué)生姓名和平均成績(jī); selectS,avg(score)asavg_scorefromSCgroupbyShavingavg_score>=60;6、查詢(xún)所有同學(xué)的學(xué)生編號(hào)、學(xué)生姓名、選課總數(shù)、所有課程的總成績(jī);Selecta.S,a.sname,count(*),sum(b.score)fromstudentasajoinscasbona.S=b.Sgroupbya.s,a.sname;第5章分布式計(jì)算框架MapReduce一、簡(jiǎn)答題請(qǐng)簡(jiǎn)要敘述MapReduce計(jì)算模型的工作原理。答:MapReduce程序分三個(gè)階段執(zhí)行,即map階段、shuffle階段和reduce階段,其中shuffle可以由MapReduce框架自動(dòng)完成。還可以包含可選的Combine階段,用于數(shù)據(jù)合并:map->combine->shuffle->reduce。通常情況下,MapReduce算法包括兩個(gè)任務(wù):Map和Reduce。(1)Map(映射過(guò)程):把一組數(shù)據(jù)按照某種Map函數(shù)映射成新的數(shù)據(jù),也就是說(shuō),map主要是:映射、變換、過(guò)濾的過(guò)程。Mapper程序會(huì)根據(jù)InputFormat將輸入文件分割成splits,每個(gè)split會(huì)作為一個(gè)maptask的輸入。map任務(wù)處理每一個(gè)記錄時(shí),會(huì)生成一個(gè)新的中間鍵/值對(duì)(<key,values>),這個(gè)鍵和值可能與輸入對(duì)完全不同,map任務(wù)的輸出就是這些中間鍵/值對(duì)的全部集合。(2)shuffle:Map步驟之后,開(kāi)始Reduce處理之前,還有一個(gè)重要的步驟叫做Shuffle。在Shuffle中,會(huì)把map任務(wù)輸出的一組無(wú)規(guī)則的數(shù)據(jù)盡量轉(zhuǎn)換成一組具有一定規(guī)則的數(shù)據(jù)(排序好的數(shù)據(jù)),然后把數(shù)據(jù)傳遞給reduce任務(wù)運(yùn)行的節(jié)點(diǎn)。(3)Reduce(歸納過(guò)程):Reduce步驟負(fù)責(zé)數(shù)據(jù)的計(jì)算歸并,把若干組映射結(jié)果進(jìn)行匯總并輸出。它處理Shuffle后的每個(gè)鍵及其對(duì)應(yīng)值的列表,并將一系列鍵/值對(duì)返回給客戶(hù)端應(yīng)用。簡(jiǎn)要敘述Combiner的作用,試舉例說(shuō)明其用處。答:MapReduce中的Combiner是用于數(shù)據(jù)合并的可選函數(shù),用于對(duì)Map輸出數(shù)據(jù)的簡(jiǎn)單歸納,其作用是減少傳輸?shù)絉educe中的數(shù)據(jù)量。在多數(shù)應(yīng)用中,combiner都是能夠大幅提高程序效率的關(guān)鍵步驟。Combiner函數(shù)的具體實(shí)現(xiàn)由用戶(hù)指定,Mapper函數(shù)的輸出是Combiner的輸入,它的輸出是Reducer的輸入。請(qǐng)簡(jiǎn)要說(shuō)明利用MapReduce實(shí)現(xiàn)連接操作的基本原理。答:MapReducer的連接操作是在reduce端進(jìn)行多個(gè)數(shù)據(jù)源的連接。所謂的數(shù)據(jù)連接操作是指一個(gè)特定數(shù)據(jù)集中的記錄只包含了所需要數(shù)據(jù)的一部分,與其相關(guān)聯(lián)的其余信息需要利用該記錄中的一些元素值到另外一個(gè)數(shù)據(jù)集中進(jìn)行檢索,并把兩部分?jǐn)?shù)據(jù)合并起來(lái)組成完整的記錄。第6章大數(shù)據(jù)分析與挖掘一、選擇題1.所謂數(shù)據(jù)的描述性分析是指用統(tǒng)計(jì)學(xué)方法,描述數(shù)據(jù)的統(tǒng)計(jì)特征量,以下哪項(xiàng)屬于數(shù)據(jù)描述性分析方法(D)。邏輯回歸聚類(lèi)分類(lèi)離散趨勢(shì)度量2.邏輯回歸是屬于以下哪類(lèi)方法的一種(C)。數(shù)據(jù)擬合聚類(lèi)分類(lèi)數(shù)據(jù)描述性分析3.以下哪種算法是屬于層次聚類(lèi)算法(B)。K-MeansCUREWaveClusterDBSCAN二、填空題1.?dāng)?shù)據(jù)的偏態(tài)特性度量通常計(jì)算數(shù)據(jù)的__偏度___和___峰度____。2.隨機(jī)變量的分布越接近均勻分布,其離散程度越__大__,熵值則越__大__。3.回歸模型是描述因變量如何依賴(lài)___自變量___和隨機(jī)誤差項(xiàng)的方程。三、簡(jiǎn)答題1.ID3分類(lèi)算法用中的信息增益計(jì)算使用到條件熵,條件熵小則信息增益大,簡(jiǎn)述什么情況下條件熵???答:條件熵是基于某個(gè)屬性劃分后的各個(gè)子集(子節(jié)點(diǎn))的熵的加權(quán)平均和,因此劃分后各子集中樣本的類(lèi)別越純(離散度越小)則信息熵越小,則條件熵也越小。2.簡(jiǎn)述主層次聚類(lèi)算法有哪幾種類(lèi)型,以及各類(lèi)型的特點(diǎn)。答:層次聚類(lèi)分為“凝聚型層次聚類(lèi)算法”和“分裂型聚類(lèi)算法”,取決于層次分解是以自底向上(合并)還是以自頂向下(分裂)方式形成。凝聚的層次聚類(lèi)方法使用自底向上的策略,開(kāi)始時(shí)每個(gè)對(duì)象自己是獨(dú)立的類(lèi),然后不斷合并成越來(lái)越大的類(lèi),直到所有的對(duì)象都在一個(gè)類(lèi)中,或者滿足某個(gè)終止條件。在合并過(guò)程中是找出兩個(gè)最近的類(lèi)讓他們合并形成一個(gè)類(lèi),所以最多進(jìn)行N次迭代就將所有對(duì)象合并到一起了。分裂的層次聚類(lèi)方法使用自頂向下的策略,開(kāi)始時(shí)所有對(duì)象都在一個(gè)類(lèi)中,然后不斷的劃分成更小的類(lèi),直到最小的類(lèi)都足夠凝聚或者只包含一個(gè)對(duì)象。四、實(shí)驗(yàn)題【實(shí)驗(yàn)8-1】使用Python語(yǔ)言對(duì)kaggle的房?jī)r(jià)預(yù)測(cè)數(shù)據(jù)集進(jìn)行數(shù)據(jù)特性分析,并建立和訓(xùn)練回歸預(yù)測(cè)模型。1.?dāng)?shù)據(jù)準(zhǔn)備:從數(shù)據(jù)科學(xué)競(jìng)賽平臺(tái)Kaggle下載房?jī)r(jià)預(yù)測(cè)數(shù)據(jù)集(/c/house-prices-advanced-regression-techniques)。2.任務(wù)要求(1)對(duì)房?jī)r(jià)數(shù)據(jù)集進(jìn)行數(shù)據(jù)特性分析。(2)對(duì)數(shù)據(jù)集進(jìn)行預(yù)處理,包括缺失值填充、異常值處理和屬性重構(gòu)等。(3)建立和訓(xùn)練某種回歸分析模型(4)對(duì)模型的預(yù)測(cè)結(jié)果進(jìn)行評(píng)價(jià)和分析?!緦?shí)驗(yàn)8-2】將經(jīng)典的KNN分類(lèi)算法改造成基于MapReduce模型的分布式算法。實(shí)現(xiàn)方法參考:1.任務(wù)分析KNN算法首選找出待分類(lèi)樣本的K個(gè)最近鄰,然后用這K個(gè)最近鄰的多數(shù)類(lèi)標(biāo)簽作為待分類(lèi)樣本的類(lèi)別。因此,基于MapReduce模型的分布式KNN算法可以考慮分為幾下幾個(gè)步驟:(1)在分布式系統(tǒng)的各個(gè)結(jié)點(diǎn)計(jì)算待分類(lèi)樣本與數(shù)據(jù)集中各數(shù)據(jù)的距離;(2)根據(jù)距離從小到大進(jìn)行排序,選出待分類(lèi)數(shù)據(jù)的K個(gè)最近鄰;(3)各結(jié)點(diǎn)的中間結(jié)果匯總到中心結(jié)點(diǎn),再次根據(jù)距離進(jìn)行排序,選出最終的K個(gè)最近鄰,最后將K個(gè)最近鄰的多數(shù)類(lèi)作為待分類(lèi)數(shù)據(jù)的類(lèi)別。2.設(shè)計(jì)思路根據(jù)上述的分析,顯然各結(jié)點(diǎn)的中間結(jié)果只要記錄:K個(gè)最近鄰的距離和類(lèi)別標(biāo)簽(不需要記錄具體樣本數(shù)據(jù)),因此可以設(shè)計(jì)MapReduce的各階段任務(wù)和輸出格式:(1)Mapper階段輸入:待分類(lèi)樣本,數(shù)據(jù)集處理:計(jì)算待分類(lèi)樣本與數(shù)據(jù)集中每個(gè)測(cè)試數(shù)據(jù)的距離輸出:<Key,Value>序列為:<距離,類(lèi)別標(biāo)簽>(2)Combiner階段輸入:Mapper階段的輸出處理:對(duì)Mapper階段的輸出序列根據(jù)距離從小到大進(jìn)行排序,取前K個(gè)。輸出:<Key,Value>序列為:<距離,類(lèi)別標(biāo)簽>(3)Reduce階段輸入:各計(jì)算結(jié)點(diǎn)Combiner階段的輸出 處理:匯總各結(jié)點(diǎn)的中間結(jié)果,再次根據(jù)距離進(jìn)行排序,最終選出K個(gè)最近鄰 輸出:K個(gè)最近鄰的多數(shù)類(lèi)標(biāo)簽第7章大數(shù)據(jù)可視化本章學(xué)習(xí)目標(biāo)了解數(shù)據(jù)可視化的基礎(chǔ)知識(shí)。了解常見(jiàn)的數(shù)據(jù)可視化的工具和軟件。了解若干數(shù)據(jù)可視化工具的使用方法,并能完成簡(jiǎn)單的編程實(shí)現(xiàn)。本章向讀者介紹數(shù)據(jù)可視化的基本知識(shí),介紹目前常用的數(shù)據(jù)可視工具和軟件,并重點(diǎn)講解ECharts數(shù)據(jù)可視化工具的使用方法和編程實(shí)現(xiàn)案例。7.1引言所謂“數(shù)據(jù)可視化“(DataVisualization),是運(yùn)用計(jì)算機(jī)圖形學(xué)和圖像處理技術(shù),將數(shù)據(jù)轉(zhuǎn)換為圖形或圖像顯示,并進(jìn)行交互處理的理論、方法和技術(shù)。數(shù)據(jù)可視化可以提供多種數(shù)據(jù)分析的圖形方法,直觀地傳達(dá)數(shù)據(jù)的關(guān)鍵特征,從而實(shí)現(xiàn)對(duì)于復(fù)雜數(shù)據(jù)的深入洞察。通過(guò)數(shù)據(jù)可視化方法,不但可以借助圖形化手段清晰有效地傳達(dá)與溝通信息,而且還是一種發(fā)現(xiàn)未知信息的處理過(guò)程,表現(xiàn)在:可以反映信息模式、數(shù)據(jù)關(guān)聯(lián)或趨勢(shì)發(fā)現(xiàn)隱含在數(shù)據(jù)中的規(guī)律實(shí)現(xiàn)人與數(shù)據(jù)之間直接的信息傳遞幫助決策者直觀地觀察和分析數(shù)據(jù)在大數(shù)據(jù)時(shí)代,數(shù)據(jù)的復(fù)雜性和體量大大增加,可視化和可視化分析可以有效地篩選與精練數(shù)據(jù)流,通過(guò)圖形手段清晰有效地傳達(dá)與溝通信息,幫助人們更好地探索和理解復(fù)雜的數(shù)據(jù),成為人們理解復(fù)雜數(shù)據(jù)、發(fā)現(xiàn)知識(shí)和規(guī)律不可或缺的手段。REF_Ref65573622\h圖9.1是大數(shù)據(jù)可視化示例,圖中展示了某個(gè)大數(shù)據(jù)可視化平臺(tái)的“數(shù)據(jù)大屏”界面。圖STYLEREF1\s9.SEQ圖\*ARABIC\s11大數(shù)據(jù)可視化示例7.1.1數(shù)據(jù)可視化的早期案例其實(shí)早在19世紀(jì),人們就開(kāi)始通過(guò)圖形的可視化,來(lái)分析問(wèn)題,以下是兩則在19世紀(jì)發(fā)生的與數(shù)據(jù)可視化的小故事。1.斯諾的標(biāo)點(diǎn)地圖1854年,倫敦爆發(fā)霍亂,10天內(nèi)奪去了500多人的生命。根據(jù)當(dāng)時(shí)流行的觀點(diǎn),霍亂是經(jīng)空氣傳播的。但是約翰·斯諾(JohnSnow)醫(yī)生并不相信這種說(shuō)法,他認(rèn)為霍亂是經(jīng)水傳播的。斯諾用標(biāo)點(diǎn)地圖(如REF_Ref61686748\h圖9.2所示)的方法研究了當(dāng)?shù)厮植己突魜y患者分布之間的關(guān)系,發(fā)現(xiàn)在寬街(BroadStreet)的一口水井供水范圍內(nèi)霍亂出現(xiàn)率明顯較高,最終憑此線索找到該次霍亂爆發(fā)的原因:一個(gè)被污染的水泵。洞悉真相的斯諾醫(yī)生趕緊通知政府關(guān)掉了那個(gè)水泵,疫情立馬就停了,萬(wàn)千蒼生得以幸免。。圖STYLEREF1\s9.SEQ圖\*ARABIC\s121854年斯諾的倫敦霍亂標(biāo)點(diǎn)地圖2.南丁格爾的玫瑰圖兼為護(hù)士和統(tǒng)計(jì)學(xué)家的弗羅倫斯·南丁格爾,為了調(diào)查戰(zhàn)爭(zhēng)期間士兵死亡的真正原因。根據(jù)1854年4月~1856年3月期間士兵死亡的數(shù)據(jù),創(chuàng)建出美麗的統(tǒng)計(jì)玫瑰圖(如REF_Ref61686723\h圖9.3所示),形象的展示士兵死亡的真正原因和戰(zhàn)地醫(yī)療救護(hù)的作用。這種圖表形式也被稱(chēng)作“南丁格爾的玫瑰“,是一種圓形的直方圖,南丁格爾自己常昵稱(chēng)這類(lèi)圖為雞冠花圖(coxcomb),并且用以表達(dá)軍醫(yī)院季節(jié)性的死亡率,對(duì)象是那些不太能理解傳統(tǒng)統(tǒng)計(jì)報(bào)表的公務(wù)人員。她的方法打動(dòng)了當(dāng)時(shí)的高層,包括軍方人士和維多利亞女王本人,于是醫(yī)事改良的提案才得到支持。圖STYLEREF1\s9.SEQ圖\*ARABIC\s13南丁格爾的玫瑰圖這張圖圖描述了1854年4月~1856年3月期間士兵死亡情況,右邊的子圖是1854年4月~1855年3月,左邊的子圖是1855年4月~1856年3月,左右兩個(gè)玫瑰圖被時(shí)間點(diǎn)“1955年3月”所隔開(kāi),左右兩個(gè)玫瑰圖都包含了12個(gè)月的數(shù)據(jù)。其中,右側(cè)較大的玫瑰圖,展現(xiàn)的是1854年4月至1955年3月;而左側(cè)的玫瑰圖,展現(xiàn)的則是1855年4月至1856年3月。用藍(lán)、紅、黑三種顏色表示三種不同的情況,藍(lán)色代表可預(yù)防和可緩解的疾病治療不及時(shí)造成的死亡、紅色代表戰(zhàn)場(chǎng)陣亡、黑色代表其他死亡原因。圖表各扇區(qū)角度相同,用半徑及扇區(qū)面積來(lái)表示死亡人數(shù),可以清晰的看出每個(gè)月因各種原因死亡的人數(shù)。顯然,1854~1855年,因醫(yī)療條件而造成的死亡人數(shù)遠(yuǎn)遠(yuǎn)大于戰(zhàn)死沙場(chǎng)的人數(shù),這種情況直到1856年初才得到緩解。南丁格爾的這張圖表以及其他圖表“生動(dòng)有力的說(shuō)明了在戰(zhàn)地開(kāi)展醫(yī)療救護(hù)和促進(jìn)傷兵醫(yī)療工作的必要性,打動(dòng)了當(dāng)局者,增加了戰(zhàn)地醫(yī)院,改善了軍隊(duì)醫(yī)院的條件,為挽救士兵生命做出了巨大貢獻(xiàn)”。7.1.2大數(shù)據(jù)可視化案例1.百度遷徙百度遷徙(/)是百度公司在2014年春運(yùn)期間推出的一個(gè)品牌的項(xiàng)目,首次啟用百度地圖定位,大數(shù)據(jù)可視化的方式展示了國(guó)內(nèi)春節(jié)人口遷徙情況,發(fā)了人們的巨大關(guān)注,如REF_Ref65574030\h圖9.4所示。圖STYLEREF1\s9.SEQ圖\*ARABIC\s14百度遷徙示意圖百度遷徙利用百度后臺(tái)每天數(shù)十億次LBS定位數(shù)據(jù)進(jìn)行運(yùn)算分析,通過(guò)可視化大數(shù)據(jù)的方式展現(xiàn)全國(guó)春運(yùn)動(dòng)態(tài),包括當(dāng)前全國(guó)春運(yùn)最熱的路線,最熱門(mén)的遷出城市、遷入城市等。目前,百度遷徙平臺(tái)可查看全國(guó)除港澳臺(tái)所有城市的遷徙狀況;每個(gè)城市的從春運(yùn)首日至昨日的遷徙走勢(shì);從宏觀查看全國(guó)熱門(mén)路線,熱門(mén)目的地、熱門(mén)出發(fā)地。2.航線星云航線星云是一個(gè)全球頂級(jí)的大數(shù)據(jù)可視化案例,數(shù)據(jù)源包括約6萬(wàn)條直飛航班信息,這些航班穿梭在3000多個(gè)機(jī)場(chǎng)間,覆蓋了500多條航線。通過(guò)可視化技術(shù),可以看到世界上各家不同的航空公司看起來(lái)就像是一個(gè)美麗的星云(如REF_Ref61693536\h圖9.5所示)。圖STYLEREF1\s9.SEQ圖\*ARABIC\s15航線星云示意圖這張基于數(shù)據(jù)可視化的Sigma圖表顯示了服務(wù)城市相似的不同航空公司。圖中的圓點(diǎn)或圓圈代表航空公司,連線的粗細(xì)和遠(yuǎn)近則反映兩個(gè)航空公司之間的相似性;連線越粗或越短則代表兩家航空公司服務(wù)的城市越相似??偟膩?lái)說(shuō),這張圖表揭示了各航空公司之間的相似性和競(jìng)爭(zhēng)情況,有利于發(fā)掘潛在的合作關(guān)系、增加市場(chǎng)份額和市場(chǎng)覆蓋面。這項(xiàng)技術(shù)可以通過(guò)不同參與者之間的相同變量,用于分析任何生態(tài)系統(tǒng)7.2數(shù)據(jù)可視化的常用方法可視化的數(shù)據(jù)根據(jù)屬性或變量的類(lèi)型可以分為“數(shù)值型”和“類(lèi)屬性型”數(shù)據(jù),根據(jù)數(shù)據(jù)集的類(lèi)型,可以分為“結(jié)構(gòu)化數(shù)據(jù)”和“非結(jié)構(gòu)化數(shù)據(jù)”,如REF_Ref61978665\h圖9.6所示。圖STYLEREF1\s9.SEQ圖\*ARABIC\s16可視化的數(shù)據(jù)類(lèi)型針對(duì)不同類(lèi)型的數(shù)據(jù),有多種多樣的展現(xiàn)形式,可以歸納為趨勢(shì)型數(shù)據(jù)可視化方法、、比例型數(shù)據(jù)可視化方法、關(guān)對(duì)比型數(shù)據(jù)可視化方法系型數(shù)據(jù)可視化方法等。7.2.1趨勢(shì)型數(shù)據(jù)可視化方法趨勢(shì)型數(shù)據(jù)可視化包括散點(diǎn)圖、折線圖、階梯圖和時(shí)間序列圖等。1.散點(diǎn)圖(Scatterplot)散點(diǎn)圖使用數(shù)據(jù)值作為x軸和y軸坐標(biāo)來(lái)繪制點(diǎn),即數(shù)據(jù)點(diǎn)(x,y)在直角坐標(biāo)系平面上的分布圖,在回歸分析中,可以選擇合適的函數(shù)對(duì)數(shù)據(jù)點(diǎn)進(jìn)行擬合,從而判斷兩變量之間是否存在某種關(guān)聯(lián)或總結(jié)坐標(biāo)點(diǎn)的分布模式。散點(diǎn)圖將序列顯示為一組點(diǎn),值由點(diǎn)在圖表中的位置表示,散點(diǎn)圖的樣式如REF_Ref62202271\h圖9.7所示。圖STYLEREF1\s9.SEQ圖\*ARABIC\s17散點(diǎn)圖樣例2.折線圖(Linechart)折線圖是用線段順序連接空間的各個(gè)數(shù)據(jù)點(diǎn),折線圖與散點(diǎn)圖對(duì)比,其更突出數(shù)據(jù)點(diǎn)表現(xiàn)變化,而散點(diǎn)圖突出表現(xiàn)數(shù)據(jù)點(diǎn)分布情況,前者不能做回歸分析,而后者可以。折線圖的樣式如REF_Ref62202361\h圖9.8所示。圖STYLEREF1\s9.SEQ圖\*ARABIC\s18折線圖樣例3.階梯圖(Stepplot)階梯圖又稱(chēng)為瀑布圖,它是一種無(wú)規(guī)律、間歇型階躍的方式表達(dá)數(shù)值的變化,可以用于數(shù)據(jù)的變化和構(gòu)成情況的分析(如保險(xiǎn)產(chǎn)品、電價(jià)、水價(jià)等)。階梯圖的樣式如REF_Ref62202464\h圖9.9所示。圖STYLEREF1\s9.SEQ圖\*ARABIC\s19階梯圖樣例4.時(shí)間序列圖(TimeSeriesPlot)時(shí)間序列圖用于顯示給定度量隨時(shí)間變化的方式,它是以時(shí)間為橫軸,觀察變量為縱軸,用以反映時(shí)間與數(shù)量之間的關(guān)系,觀察變量變化發(fā)展的趨勢(shì)及偏差的統(tǒng)計(jì)圖。時(shí)間序列圖的樣式如REF_Ref62205877\h圖9.10所示。圖STYLEREF1\s9.SEQ圖\*ARABIC\s110時(shí)間序列樣例圖7.2.2對(duì)比型數(shù)據(jù)可視化方法對(duì)比型數(shù)據(jù)可以使用柱狀圖、面積圖、雷達(dá)圖、氣泡圖等進(jìn)行可視化呈現(xiàn)。1.柱狀圖柱狀圖是一種以長(zhǎng)方形的長(zhǎng)度為變量的統(tǒng)計(jì)圖表,它使用垂直或水平的柱子顯示類(lèi)別之間的數(shù)值比較,用于描述分類(lèi)數(shù)據(jù),并統(tǒng)計(jì)每一個(gè)分類(lèi)中的數(shù)量,柱狀圖的樣式如REF_Ref62202535\h圖9.11所示。圖STYLEREF1\s9.SEQ圖\*ARABIC\s111柱狀圖樣例2.面積圖(AreaChart)面積圖是在折線圖的基礎(chǔ)上形成的,它將折線圖中折線與坐標(biāo)軸之間的區(qū)域使用顏色進(jìn)行填充,這個(gè)填充即為我們所說(shuō)的面積,顏色的填充可以更好的突出趨勢(shì)信息,面積圖的樣式如REF_Ref62202582\h圖9.12所示。圖STYLEREF1\s9.SEQ圖\*ARABIC\s112面積圖樣例3.雷達(dá)圖雷達(dá)圖,又稱(chēng)網(wǎng)狀圖或星狀圖,它形似雷達(dá)界面,雷達(dá)圖用于同時(shí)對(duì)多個(gè)數(shù)據(jù)的對(duì)比分析和同一數(shù)據(jù)在不同時(shí)期的變化進(jìn)行分析,可以有效地表示數(shù)據(jù)的聚合值,也就是數(shù)據(jù)在各個(gè)方向上達(dá)到的峰值,雷達(dá)圖的樣式如REF_Ref62202627\h圖9.13所示。圖STYLEREF1\s9.SEQ圖\*ARABIC\s113雷達(dá)圖樣例4.氣泡圖氣泡圖通常用于比較和展示不同類(lèi)別之間的關(guān)系(例如分析數(shù)據(jù)之間的相關(guān)性),通過(guò)氣泡的位置以及面積大小進(jìn)行比較,氣泡圖的樣式如REF_Ref62202729\h圖9.14所示。圖STYLEREF1\s9.SEQ圖\*ARABIC\s114氣泡圖樣例7.2.3比例型數(shù)據(jù)可視化方法比例型數(shù)據(jù)可以使用餅圖、堆壘柱形圖和堆壘面積圖等進(jìn)行可視化呈現(xiàn)。1.餅圖餅圖用于表示不同分類(lèi)的占比情況,通過(guò)弧度大小來(lái)對(duì)比各種分類(lèi)。餅圖通過(guò)將一個(gè)圓餅按照分類(lèi)的占比劃分成多個(gè)區(qū)塊,整個(gè)圓餅代表數(shù)據(jù)的總量,每個(gè)區(qū)塊表示該分類(lèi)占總體的比例大小,所有區(qū)塊的和等于100%。餅圖的樣式如REF_Ref62202824\h圖9.15所示。圖STYLEREF1\s9.SEQ圖\*ARABIC\s115餅圖樣例2.堆壘柱形圖(StackColumn)堆壘柱形圖顯示單個(gè)項(xiàng)目與整體之間的關(guān)系,它比較各個(gè)類(lèi)別的每個(gè)數(shù)值所占總數(shù)值的大小。堆壘柱形圖以二維垂直堆積矩形顯示數(shù)值。當(dāng)有多個(gè)數(shù)據(jù)系列并且希望強(qiáng)調(diào)總數(shù)值時(shí),可以使用堆壘柱形圖。堆壘柱形圖的樣式如REF_Ref62202880\h圖9.16所示。圖STYLEREF1\s9.SEQ圖\*ARABIC\s116堆壘柱形圖樣例3.堆壘面積圖(StackArea)堆壘柱形圖是由一些大小相同的小正方體堆壘而成的,顯示每個(gè)數(shù)值所占的比例陽(yáng)隨類(lèi)別或時(shí)間變化的趨勢(shì)。堆壘面積圖的樣式如REF_Ref62203621\h圖9.17所示。圖STYLEREF1\s9.SEQ圖\*ARABIC\s117堆壘面積圖樣例7.2.4分布型數(shù)據(jù)可視化分布型數(shù)據(jù)可以使用直方圖、箱型圖、概率密度圖等進(jìn)行可視化呈現(xiàn)。1.直方圖(Histogram)直方圖(Histogram),又稱(chēng)質(zhì)量分布圖,是一種統(tǒng)計(jì)報(bào)告圖,由一系列高度不等的縱向條紋或線段表示數(shù)據(jù)分布的情況,一般用橫軸表示數(shù)據(jù)類(lèi)型,縱軸表示分布情況。直方圖是數(shù)值數(shù)據(jù)分布的精確圖形表示,為了構(gòu)建直方圖,需要將值的范圍均勻分段(分成多個(gè)bin),然后計(jì)算每個(gè)bin中有多少值,最后在坐標(biāo)軸上繪制每個(gè)bin上分布的值的數(shù)量。直方圖的樣式如REF_Ref62204011\h圖9.18所示。圖STYLEREF1\s9.SEQ圖\*ARABIC\s118直方圖樣例2.箱形圖(Boxdiagram)箱形圖(英文:Boxplot),又稱(chēng)為盒狀圖或箱線圖,是一種用作顯示一組數(shù)據(jù)分散情況資料的統(tǒng)計(jì)圖。因形狀如箱子而得名。在各種領(lǐng)域也經(jīng)常被使用。箱形圖于1977年由美國(guó)著名統(tǒng)計(jì)學(xué)家約翰·圖基(JohnTukey)發(fā)明,它能顯示出一組數(shù)據(jù)的最大值、最小值、中位數(shù)、及上下四分位數(shù)。箱形圖的樣式如REF_Ref62204076\h圖9.19所示圖STYLEREF1\s9.SEQ圖\*ARABIC\s119箱型圖樣例3.概率密度圖(DensityPlot)前面提到的直方圖、箱線圖都是離散型數(shù)據(jù)的分布圖,而概率密度圖則是連續(xù)型變量的數(shù)據(jù)分布圖,它是指隨機(jī)變量落在其區(qū)間內(nèi)的概率,用色塊填充成陰影部分面積。概率密度圖是用概率密度曲線畫(huà)的,橫軸是連續(xù)型隨機(jī)變量x,縱軸是概率密度函數(shù)f(x)。概率密度圖樣式如REF_Ref62204242\h圖9.20所示,圖STYLEREF1\s9.SEQ圖\*ARABIC\s120概率密度圖樣例7.2.5文本數(shù)據(jù)可視化對(duì)于文本數(shù)據(jù)可視化,最著名的是由美國(guó)西北大學(xué)新聞學(xué)副教授、新媒體專(zhuān)業(yè)主任里奇·戈登(RichGordon)于2006年最先使用的“詞云”(也稱(chēng)為標(biāo)簽云,TagCloud),它是是通過(guò)形成“關(guān)鍵詞云層”或“關(guān)鍵詞渲染”,對(duì)網(wǎng)絡(luò)文本中出現(xiàn)頻率較高的“關(guān)鍵詞”的視覺(jué)上的突出。REF_Ref61691175\h圖9.21是以馬丁.路德金的《IHaveaDream》一文為例生成的“詞云”,可以看出該文中有“freedom”、“dream”和“negro”等高頻率詞。圖STYLEREF1\s9.SEQ圖\*ARABIC\s121"詞云"示意圖目前,有許多流行的“詞云”生成工具,例如Wordle、WordItOut、Tagxedo、WordArt、ToCloud和圖悅等。時(shí)序文本是指具有時(shí)間或順序特性的文本,例如一篇小說(shuō)故事情節(jié)的變化,或一個(gè)新聞事件隨時(shí)間的演化。主題河流(ThemeRiver)是一種經(jīng)典的時(shí)序文本可視化方法,它將主題的演變嵌入時(shí)間長(zhǎng)河中,如REF_Ref66198946\h圖9.22所示。橫軸表示時(shí)間,每一條不同顏色線條可視作一條河流,而每條河流則表示一個(gè)主題,河流的寬度代表其在當(dāng)前時(shí)間點(diǎn)上的一個(gè)度量(如主題的強(qiáng)度)。這樣既可以在宏觀上看出多個(gè)主題的發(fā)展變化,又能看出在特定時(shí)間點(diǎn)上主題的分布。圖STYLEREF1\s9.SEQ圖\*ARABIC\s122主題漂流圖示例7.2.6關(guān)系網(wǎng)絡(luò)數(shù)據(jù)可視化關(guān)系網(wǎng)絡(luò)數(shù)據(jù)可視化(NetworkVisualization)的重要用途是揭示對(duì)象之間的復(fù)雜關(guān)聯(lián)關(guān)系,具有廣泛的應(yīng)用場(chǎng)景,例如:疾病傳播分析、社交網(wǎng)絡(luò)分析(如社區(qū)發(fā)現(xiàn),Communitydiscovery)、科研人員的研究協(xié)作分析、路由器網(wǎng)絡(luò)的設(shè)計(jì)、演員的協(xié)作關(guān)系分析等。1.力導(dǎo)向圖(Force-DirectedGraph)力導(dǎo)向圖是一種常用的關(guān)系網(wǎng)絡(luò)可視化工具,它能表示節(jié)點(diǎn)之間的多對(duì)多的關(guān)系,可以根據(jù)實(shí)時(shí)狀態(tài)自動(dòng)完成很好的聚類(lèi),方便用戶(hù)看出點(diǎn)之間的親疏關(guān)系,并且用節(jié)點(diǎn)的大小表示重要性。力導(dǎo)向圖的樣式如REF_Ref62204334\h圖9.23所示。圖STYLEREF1\s9.SEQ圖\*ARABIC\s123關(guān)系網(wǎng)絡(luò)的力導(dǎo)向圖樣例2.?;鶊D(Sankeydiagram)?;鶊D也稱(chēng)為桑基能量分流圖或?;芰科胶鈭D,它是一種特定類(lèi)型的流程圖,圖中延伸的分支的寬度對(duì)應(yīng)數(shù)據(jù)流量的大小,因1898年MatthewHenryPhineasRiallSankey繪制的“蒸汽機(jī)的能源效率圖”而聞名,此后便以其名字命名為“?;鶊D”。桑基圖主要由支點(diǎn)、邊和流量組成,其中節(jié)點(diǎn)代表不同對(duì)象,邊代表了流動(dòng)的數(shù)據(jù),流量代表了流動(dòng)數(shù)據(jù)的具體數(shù)值。邊的寬度與流量成比例地顯示,邊越寬,數(shù)值越大。?;鶊D的樣式如REF_Ref62204911\h圖9.24所示。圖STYLEREF1\s9.SEQ圖\*ARABIC\s124桑基圖樣例7.2.7時(shí)空數(shù)據(jù)可視化時(shí)空數(shù)據(jù)是指具有時(shí)間元素并隨時(shí)間變化而變化的空間數(shù)據(jù),是描述地球環(huán)境中地物要素信息的一種表達(dá)方式。時(shí)空數(shù)據(jù)靜態(tài)可視化,一般是以二維地圖上疊加可以描述時(shí)間變化的要素,來(lái)描述時(shí)空屬性數(shù)據(jù)與空間范圍內(nèi)的變化特征;動(dòng)態(tài)可視化可采用動(dòng)態(tài)地圖、三維GIS等多種手段展現(xiàn)時(shí)空數(shù)據(jù),將時(shí)空數(shù)據(jù)在動(dòng)態(tài)變化的地圖或三維場(chǎng)景中呈現(xiàn)出來(lái),可以直觀生動(dòng)地表示各種空間信息的變化過(guò)程。REF_Ref61979597\h圖9.25是一個(gè)北京外賣(mài)大數(shù)據(jù)可視化案例的圖示,該案例以北京外賣(mài)配送的移動(dòng)軌跡與物流起始點(diǎn)數(shù)據(jù)為基礎(chǔ),探索一天中不同時(shí)段的外賣(mài)訂單量的地理分布。案例的數(shù)據(jù)是提取自某即時(shí)物流平臺(tái),以訂單起始點(diǎn)在地理空間上形成顯著聚合的27個(gè)地塊作為城市商業(yè)地塊,通過(guò)其不同時(shí)段的訂單活躍情況,解讀不同商業(yè)地塊的特點(diǎn),觀察不同時(shí)段的訂單起始點(diǎn)在城市空間分布上的差異,并分辨出訂單起始點(diǎn)產(chǎn)生集聚的幾個(gè)典型地塊。圖STYLEREF1\s9.SEQ圖\*ARABIC\s125北京外賣(mài)大數(shù)據(jù)可視化示例7.2.8層次結(jié)構(gòu)數(shù)據(jù)可視化層次數(shù)據(jù)表示對(duì)象之間的層次關(guān)系,可以被抽象為樹(shù)(Tree)結(jié)構(gòu),例如社會(huì)關(guān)系中的從屬關(guān)系、事物的包含關(guān)系、組織結(jié)構(gòu)信息和邏輯承接關(guān)系等等。層次數(shù)據(jù)可視化的要點(diǎn)是對(duì)數(shù)據(jù)中層次關(guān)系的有效刻畫(huà),主要有兩種表現(xiàn)方式:"節(jié)點(diǎn)鏈接法"和"空間填充法"。1.節(jié)點(diǎn)鏈接法(node-link)節(jié)點(diǎn)鏈接法將單個(gè)個(gè)體繪制成一個(gè)節(jié)點(diǎn),節(jié)點(diǎn)之間的連線表示個(gè)體之間的層次關(guān)系,代表圖形有:空間樹(shù)、圓錐樹(shù)、徑向樹(shù)、雙曲樹(shù)。REF_Ref61983350\h圖9.26是"節(jié)點(diǎn)鏈接法"的樣例圖,左邊的子圖是“徑向樹(shù)(RadialTree)”,特點(diǎn)是根節(jié)點(diǎn)位于圓心,不同層次的節(jié)點(diǎn)被放置在半徑不同的同心圓上。右邊的子圖是“圓錐樹(shù)(ConeTree)”,是一種在三維空間可視化層次數(shù)據(jù)的技術(shù),結(jié)合了正交布局和徑向布局兩種思想。圖STYLEREF1\s9.SEQ圖\*ARABIC\s126"節(jié)點(diǎn)鏈接法"示例圖2.空間填充法(space-filling)空間填充法用空間中的區(qū)域來(lái)表示數(shù)據(jù)中的個(gè)體,并用外側(cè)區(qū)域?qū)?nèi)層區(qū)域的包圍來(lái)表示層次關(guān)系。REF_Ref61984128\h圖9.27是“空間填充法”的示例圖,左邊的子圖是“矩形樹(shù)圖(TreeMap)”,用矩形表示層次結(jié)構(gòu)里的節(jié)點(diǎn),父子節(jié)點(diǎn)之間的層次關(guān)系用矩形之間的相互嵌套隱喻表示。右邊的子圖是“旭日?qǐng)D(Sunburst)”,中心的圓代表根節(jié)點(diǎn),各個(gè)層次用同心圓表示。圖STYLEREF1\s9.SEQ圖\*ARABIC\s127"空間填充法"示例圖7.2.9高維數(shù)據(jù)可視化大數(shù)據(jù)的一個(gè)特性是維度高,如一個(gè)電商平臺(tái)中商品的信息就高達(dá)上百個(gè)維度。人類(lèi)最直觀的是理解二維空間中的數(shù)據(jù),因此高維數(shù)據(jù)可視化通常需要運(yùn)用降維方法,以二維或三維的形式進(jìn)行呈現(xiàn)。常用的高維數(shù)據(jù)可視化方法包括:Andrews曲線、平行坐標(biāo)、RadViz圖等,還需要使用降維算法,如主成分分析(PCA)、線性差別式分析(LDA)和多維縮放(MDS)等。1.Andrew曲線(Andrewscurve)調(diào)和曲線圖由Andrews于1972年提出,因此又叫Andrewsplots或Andrewscurve,是將多元數(shù)據(jù)以二維曲線展現(xiàn)的一種統(tǒng)計(jì)圖,常用于表示多元數(shù)據(jù)的結(jié)構(gòu)。REF_Ref62205214\h圖9.28是Andrew曲線(Andrewscurve)的一個(gè)示例,該圖將Iris數(shù)據(jù)集(鳶尾花數(shù)據(jù)集)每個(gè)樣本的屬性值轉(zhuǎn)化為傅里葉序列的系數(shù)來(lái)創(chuàng)建二維曲線。圖STYLEREF1\s9.SEQ圖\*ARABIC\s128Andrew圖樣例2.平行坐標(biāo)圖平行坐標(biāo)圖將多維數(shù)據(jù)的各個(gè)變量用一系列相互平行的坐標(biāo)軸表示,并將不同變量的各點(diǎn)連接成折線,以反映變化趨勢(shì)和各個(gè)變量間相互關(guān)系。平行坐標(biāo)的樣式如REF_Ref61987870\h圖9.29所示。圖STYLEREF1\s9.SEQ圖\*ARABIC\s129平行坐標(biāo)圖樣例7.3數(shù)據(jù)可視化常用工具簡(jiǎn)介在數(shù)據(jù)的可視化方面,如今有大量的工具可供選擇,根據(jù)它們的功能和用途,可以分為可視化編程工具、可視化報(bào)表工具、商業(yè)智能分析工具和大數(shù)據(jù)可視化大屏工具等等,REF_Ref65574168\h表9.1是目前常用的數(shù)據(jù)可視化工具以及它們的特性。表STYLEREF1\s9.SEQ表\*ARABIC\s11數(shù)據(jù)可視化常用工具名稱(chēng)類(lèi)型特點(diǎn)來(lái)源D3.js可視化編程工具基于JavaScript的開(kāi)源可視化編程工具開(kāi)源項(xiàng)目/ECharts可視化編程工具基于JavaScript的開(kāi)源可視化編程工具百度公司開(kāi)源的Apache項(xiàng)目FineReport可視化報(bào)表企業(yè)級(jí)報(bào)表生成工具,用于開(kāi)發(fā)業(yè)務(wù)報(bào)表,數(shù)據(jù)分析報(bào)表中國(guó)帆軟軟件有限公司Tableau商業(yè)智能分析商業(yè)數(shù)據(jù)可視化分析平臺(tái),可通過(guò)拖放操作實(shí)現(xiàn)數(shù)據(jù)查詢(xún)和可視化呈現(xiàn)美國(guó)Tableau

公司MicrosoftExcel電子表格和圖表工具基于電子表格的數(shù)據(jù)分析和可視化工具美國(guó)微軟公司DataV大數(shù)據(jù)可視化大屏工具拖拽式可視化工具,用于業(yè)務(wù)數(shù)據(jù)與地理信息融合的大數(shù)據(jù)可視化中國(guó)阿里巴巴公司Python可視化編程工具庫(kù)Python的數(shù)據(jù)可視化庫(kù)(Matplotlib和Seaborn等)開(kāi)源項(xiàng)目/Matlab科學(xué)計(jì)算和繪圖工具M(jìn)atlab提供了一系列的繪圖函數(shù),包括函數(shù)繪圖,簡(jiǎn)易繪圖,疊加繪圖,添加曲線,交互繪圖等功能美國(guó)MathWorks公司Origin科學(xué)繪圖和數(shù)據(jù)分析軟件支持各種各樣的2D/3D圖形,其中的數(shù)據(jù)分析功能包括統(tǒng)計(jì),信號(hào)處理,曲線擬合以及峰值分析美國(guó)OriginLab公司7.3.1Tableau數(shù)據(jù)可視化工具簡(jiǎn)介T(mén)ableau是一款商業(yè)智能分析和數(shù)據(jù)可視化工具,致力于幫助人們查看并理解自己的數(shù)據(jù)。它來(lái)源于2003年斯坦福大學(xué)的一個(gè)計(jì)算機(jī)科學(xué)項(xiàng)目的結(jié)果,該項(xiàng)目旨在改善數(shù)據(jù)分析流程并通過(guò)可視化使人們更容易訪問(wèn)數(shù)據(jù)。Tableau公司的共同創(chuàng)始人ChrisStolte,PatHanrahan和ChristianChabot開(kāi)發(fā)并獲得了Tableau的基礎(chǔ)技術(shù)VizQL并申請(qǐng)了專(zhuān)利,該技術(shù)通過(guò)直觀的界面將拖放操作轉(zhuǎn)換為數(shù)據(jù)查詢(xún)來(lái)可視化地表達(dá)數(shù)據(jù)。VizQL是一種可視化的查詢(xún)語(yǔ)言,它將拖拽動(dòng)作轉(zhuǎn)換為數(shù)據(jù)查詢(xún),從而通過(guò)可視化的形式表達(dá)了數(shù)據(jù)。VizQL能夠幫助人們顯著提高他們看到和理解的通過(guò)抽象查詢(xún)和分析底層數(shù)據(jù)的復(fù)雜性的能力。1.Tableau的功能與特點(diǎn)(1)簡(jiǎn)單易用Tableau的實(shí)時(shí)查詢(xún)引擎可以讓使用者無(wú)需任何編程或高級(jí)開(kāi)發(fā),就能夠查詢(xún)數(shù)據(jù)庫(kù)、多維數(shù)據(jù)集、數(shù)據(jù)倉(cāng)庫(kù)、云資源,甚至Hadoop上的分布式數(shù)據(jù)庫(kù)。使用者不需要精通復(fù)雜的編程和統(tǒng)計(jì)原理,只需要把數(shù)據(jù)直接拖放到工作簿(數(shù)字“畫(huà)布”)上,通過(guò)一些簡(jiǎn)單的設(shè)置就可以得到想要的各種可視化圖表。(2)數(shù)據(jù)混合數(shù)據(jù)混合是Tableau中最重要的功能,當(dāng)需要對(duì)來(lái)自多個(gè)數(shù)據(jù)源的相關(guān)數(shù)據(jù)進(jìn)行分析和展示時(shí),可以使用它在單個(gè)視圖中一起分析,并以圖形的形式表示。(3)實(shí)時(shí)分析實(shí)時(shí)分析使用戶(hù)能夠快速理解和分析動(dòng)態(tài)數(shù)據(jù),當(dāng)數(shù)據(jù)流量速度很快時(shí),對(duì)實(shí)時(shí)分析的要求就很高,Tableau可以通過(guò)交互式分析幫助從快速移動(dòng)的數(shù)據(jù)中提取有價(jià)值的信息。(4)協(xié)作共享Tableau還可以讓團(tuán)隊(duì)與工作組共享分析結(jié)果,并將易于理解的可視化轉(zhuǎn)發(fā)給可以從數(shù)據(jù)中獲取價(jià)值的其他人,以便讓他人了解數(shù)據(jù)并做出明智的決策。通過(guò)TableauServer可以將桌面版開(kāi)發(fā)的文件發(fā)布在服務(wù)上進(jìn)行共享,并提供數(shù)據(jù)安全管理。(5)數(shù)據(jù)接口豐富Tableau提供了目前大多數(shù)主流的數(shù)據(jù)庫(kù)系統(tǒng)和數(shù)據(jù)文件格式的接口,可以非常容易地從其他數(shù)據(jù)源導(dǎo)入數(shù)據(jù),它的數(shù)據(jù)接口如REF_Ref62211943\h圖9.30所示。圖STYLEREF1\s9.SEQ圖\*ARABIC\s130Tableau的數(shù)據(jù)源2.Tableau的產(chǎn)品序列Tableau軟件包括6種產(chǎn)品,它們分別是:TableauDesktop:桌面分析軟件,連接數(shù)據(jù)源后,只需拖拉即可快速創(chuàng)建交互的視圖、儀表盤(pán)。REF_Ref65574297\h圖9.31是TableauDesktop的界面示意圖。TableauServer:將桌面版開(kāi)發(fā)的文件發(fā)布到服務(wù)器上,共享給企業(yè)中的其他用戶(hù),提供數(shù)據(jù)源管理和安全信息管理。REF_Ref65574306\h圖9.32是TableauServer的界面示意圖。TableauOnline:完全托管在云端的分析平臺(tái),可以嵌入到Web頁(yè)面中,并在Web上進(jìn)行交互、編輯和制作。TableauReader:在桌面免費(fèi)打開(kāi)查看已經(jīng)制作好的Tableau工作簿。TableauMoblie:移動(dòng)端APP,但只支持查看而不能編輯TableauPublic:免費(fèi)版本,無(wú)法連接所有的數(shù)據(jù)格式或者數(shù)據(jù)源,但是已經(jīng)能夠完成大部分的工作。該版本無(wú)法在本地保存工作簿,只能保存到云端的公共工作簿中。圖STYLEREF1\s9.SEQ圖\*ARABIC\s131TableauDesktop界面示意圖圖STYLEREF1\s9.SEQ圖\*ARABIC\s132TableauServe界面示意圖7.3.2Python的Matplotlib庫(kù)簡(jiǎn)介Matplotlib是一個(gè)綜合性的Python繪圖庫(kù)(/index.html),用于在Python中創(chuàng)建靜態(tài)、動(dòng)畫(huà)和交互式的可視化圖表。Matplotlib能夠生成各種格式的圖形(諸如折線圖,散點(diǎn)圖,直方圖等等),界面可交互(可以利用鼠標(biāo)對(duì)生成圖形進(jìn)行點(diǎn)擊操作),生成的圖形質(zhì)量較高,甚至可以達(dá)到出版級(jí)別。1.安裝Matplotlib庫(kù)在Python程序使用Matplotlib庫(kù)之前,需要將其安裝到本地:pip3installmatplotlib2.一個(gè)簡(jiǎn)單的Matplotlib繪圖實(shí)例本實(shí)例用Matplotlib的plot函數(shù)繪制一條曲線,源代碼如下:#繪制曲線示例代碼frommatplotlibimportpyplotasplt#引入matplotlibx=[1,2,3,4]y=[1,4,2,3]fig=plt.figure()#創(chuàng)建一個(gè)Figure對(duì)象用于容納Axesax=fig.add_subplot()#添加一個(gè)Axesax.plot(x,y)#在Axes上繪制曲線圖形.ax.set_title("AsimpleMatplotlibdemo")ax.set_xlabel("Xaxislabel")ax.set_ylabel("Yaxislabel”)plt.show()本實(shí)例呈現(xiàn)的效果如REF_Ref62387045\h圖9.33所示。圖STYLEREF1\s9.SEQ圖\*ARABIC\s133一個(gè)簡(jiǎn)單的Matplotlib曲線圖例注:如果不創(chuàng)建Axes對(duì)象(坐標(biāo)軸),直接用plt.plot()也可以繪制圖形,但在處理復(fù)雜的繪圖工作時(shí),還是需要使用Axes來(lái)完成作畫(huà)。3.Matplotlib圖形的組成Matplotlib圖形主要的組成部分包括一個(gè)Figure(整個(gè)圖),F(xiàn)igure中可包含若干個(gè)Axes(坐標(biāo)軸)和畫(huà)布(canvas),和一些特殊的組件(稱(chēng)為Artist)(如titles和legends等),如所REF_Ref62388977\h圖9.34示。圖STYLEREF1\s9.SEQ圖\*ARABIC\s134Matplotlib的圖形的組成Axes(坐標(biāo)軸)是圖像中的一個(gè)區(qū)域和數(shù)據(jù)空間,一個(gè)Figure可以包含多個(gè)Axes。Axes包含兩個(gè)(或在3D情況下為三個(gè))軸對(duì)象(x軸和y軸),它們負(fù)責(zé)數(shù)據(jù)范圍限制(用set_xlim()和set_ylim()方法設(shè)定坐標(biāo)軸的數(shù)據(jù)范圍)。每個(gè)Axes都有一個(gè)標(biāo)題(通過(guò)set_title()設(shè)置)、一個(gè)x標(biāo)簽(通過(guò)set_xlabel()設(shè)置)和一個(gè)y標(biāo)簽(通過(guò)set_ylabel()設(shè)置)。4.基本的2D繪圖本節(jié)介紹Matplotlib的基本2D繪圖實(shí)例,包括直方圖、餅圖和泡泡圖。(1)直方圖用Matplotlib繪制直方圖的示例代碼如下:#繪制直方圖示例代碼importnumpyasnpfrommatplotlibimportpyplotaspltnp.random.seed(19680801)#隨機(jī)數(shù)種子x=np.random.randn(1000,3)#生成隨機(jī)數(shù)n_bins=6fig=plt.figure()#創(chuàng)建一個(gè)Figure對(duì)象用于容納坐標(biāo)軸ax1=fig.add_subplot()#添加一個(gè)Axesax1.hist(x,n_bins)ax1.set_title('Histogramdemo')plt.show()運(yùn)行上述程序后呈現(xiàn)的效果如REF_Ref62394321\h圖9.35所示:圖STYLEREF1\s9.SEQ圖\*ARABIC\s135用Matplotlib繪制直方圖示例(2)餅圖用Matplotlib繪制餅圖的示例代碼如下:。#繪制餅圖示例代碼frommatplotlibimportpyplotaspltlabels='Frogs','Hogs','Dogs','Logs'sizes=[15,30,45,10]explode=(0,0.1,0,0)fig=plt.figure(dpi=300)#分辨率設(shè)為300dpiax2=fig.add_subplot()ax2.pie(sizes,labels=labels,autopct='%1.1f%%',explode=explode,shadow=True)plt.show()上述代碼中的pie()方法自動(dòng)根據(jù)數(shù)據(jù)的百分比畫(huà)餅圖,參數(shù)labels是各個(gè)塊的標(biāo)簽,autopct=%1.1f%%表示格式化百分比精確輸出,explode標(biāo)記突出某些塊。運(yùn)行上述代碼后呈現(xiàn)的效果如REF_Ref62394540\h圖9.36所示。圖STYLEREF1\s9.SEQ圖\*ARABIC\s136Matplotlib繪制餅圖示例(3)泡泡圖用Matplotlib繪制泡泡圖(散點(diǎn)圖的一種特殊形式)的示例代碼下:#繪制泡泡圖示例代碼importnumpyasnpfrommatplotlibimportpyplotaspltnp.random.seed(19680801)fig=plt.figure(dpi=300)ax3=fig.add_subplot()N=50x=np.random.rand(N)y=np.random.rand(N)colors=np.random.rand(N)area=(30*np.random.rand(N))**2#0to15pointradiiax3.scatter(x,y,s=area,c=colors,alpha=0.5)plt.show()運(yùn)行上述代碼后呈現(xiàn)的效果如REF_Ref62394604\h圖

溫馨提示

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

評(píng)論

0/150

提交評(píng)論