大數(shù)據(jù)技術(shù)基礎(chǔ)教程 課件 第8、9章 流計算Spark Streaming、數(shù)據(jù)可視化_第1頁
大數(shù)據(jù)技術(shù)基礎(chǔ)教程 課件 第8、9章 流計算Spark Streaming、數(shù)據(jù)可視化_第2頁
大數(shù)據(jù)技術(shù)基礎(chǔ)教程 課件 第8、9章 流計算Spark Streaming、數(shù)據(jù)可視化_第3頁
大數(shù)據(jù)技術(shù)基礎(chǔ)教程 課件 第8、9章 流計算Spark Streaming、數(shù)據(jù)可視化_第4頁
大數(shù)據(jù)技術(shù)基礎(chǔ)教程 課件 第8、9章 流計算Spark Streaming、數(shù)據(jù)可視化_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第八章流計算SparkStreaming《大數(shù)據(jù)技術(shù)基礎(chǔ)教程》學(xué)習(xí)目標(biāo)/Target了解流計算概述了解流計算的概念了解Spark概述理解Spark運(yùn)行時架構(gòu)——SparkStandalone架構(gòu)學(xué)習(xí)目標(biāo)/Target理解SparkStreaming流計算掌握編寫SparkStreaming程序的基本步驟掌握創(chuàng)建StreamingContext對象掌握SparkStreaming數(shù)據(jù)源及程序開發(fā)章節(jié)概述/

SummarySpark作為下一代大數(shù)據(jù)處理引擎,現(xiàn)已成為當(dāng)今大數(shù)據(jù)領(lǐng)域非?;钴S、高效的大數(shù)據(jù)計算平臺,很多互聯(lián)網(wǎng)公司都使用Spark來實現(xiàn)公司的核心業(yè)務(wù)。Spark提供了Java、Scala、Python和R的高級API,支持一組豐富的高級工具,包括使用SQL進(jìn)行結(jié)構(gòu)化數(shù)據(jù)處理的SparkSQL,用于機(jī)器學(xué)習(xí)的MLlib,用于圖處理的GraphX,以及用于實時流處理的SparkStreaming。目錄/Contents010203流計算概述流計算的概念Spark概述04SparkStandalone架構(gòu)目錄/Contents050607SparkStreaming流計算編寫SparkStreaming程序的基本步驟創(chuàng)建StreamingContext對象08SparkStreaming數(shù)據(jù)源09SparkStreaming程序示例流計算概述11.1流計算概述流計算是一種典型的大數(shù)據(jù)計算模式,可以對源源不斷到達(dá)的流數(shù)據(jù)進(jìn)行實時處理分析。流數(shù)據(jù)具有如下特征:數(shù)據(jù)快速持續(xù)到達(dá),潛在大小也許是無窮無盡的數(shù)據(jù)來源眾多,格式復(fù)雜數(shù)據(jù)量大,但是不十分關(guān)注存儲,一旦經(jīng)過處理,要么被丟棄,要么被歸檔存儲注重數(shù)據(jù)的整體價值,不過分關(guān)注個別數(shù)據(jù)數(shù)據(jù)順序顛倒,或者不完整,系統(tǒng)無法控制將要處理的新到達(dá)的數(shù)據(jù)元素的順序。

對靜態(tài)數(shù)據(jù)和流數(shù)據(jù)的處理,對應(yīng)著兩種截然不同的計算模式:批量計算和實時計算。1.1流計算概述流計算是針對流數(shù)據(jù)的實時計算,其主要應(yīng)用于產(chǎn)生大量流數(shù)據(jù)、同時對實時性要求高的領(lǐng)域。流計算的概念22.1流計算的概念Spark概述33.1Spark概述ApacheSpark是一個快速通用的集群計算系統(tǒng),是一種與Hadoop相似的開源集群計算環(huán)境,但是Spark在一些工作負(fù)載方面表現(xiàn)得更加優(yōu)越。Spark運(yùn)行時架構(gòu)——SparkStandalone架構(gòu)44.1Spark運(yùn)行時架構(gòu)——SparkStandalone架構(gòu)SparkStandalone模式為經(jīng)典的Master/Slave(主/從)架構(gòu),資源調(diào)度是Spark自己實現(xiàn)的。在Standalone模式中,根據(jù)應(yīng)用程序提交的方式不同,Driver(主控進(jìn)程)在集群中的位置也有所不同。應(yīng)用程序的提交方式主要有兩種:client和cluster,默認(rèn)是client。4.1MapReduce程序編寫步驟(1)client提交方式4.1MapReduce程序編寫步驟(2)cluster提交方式SparkStreaming流計算55.1SparkStreaming流計算SparkStreaming是SparkCoreAPI(SparkRDD)的擴(kuò)展,支持對實時數(shù)據(jù)流進(jìn)行可伸縮、高吞吐量及容錯處理。數(shù)據(jù)可以從Kafka、Flume、Kinesis或TCPSocket等多種來源獲取,并且可以使用復(fù)雜的算法處理數(shù)據(jù),這些算法由map()、reduce()、join()和window()等高級函數(shù)表示。5.1SparkStreaming流計算SparkStreaming接收實時輸入的數(shù)據(jù)流,并將數(shù)據(jù)流以時間片(秒級)為單位拆分成批次,然后將每個批次交給Spark引擎(SparkCore)進(jìn)行處理,最終生成以批次組成的結(jié)果數(shù)據(jù)流。5.1SparkStreaming流計算在內(nèi)部,對輸入數(shù)據(jù)流拆分成的每個批次實際上是一個RDD(ResilientDistributedDatasets,彈性分布式數(shù)據(jù)集),一個DStream由多個RDD組成,相當(dāng)于一個RDD序列。編寫SparkStreaming程序的基本步驟66.1編寫SparkStreaming程序的基本步驟1)通過創(chuàng)建輸入DStream(InputDstream)來定義輸入源。流計算處理的數(shù)據(jù)對象是來自輸入源的數(shù)據(jù),這些輸入源會源源不斷產(chǎn)生數(shù)據(jù),并發(fā)送給SparkStreaming,由Receiver組件接收到以后,交給用戶自定義的SparkStreaming程序進(jìn)行處理;2)通過對DStream應(yīng)用轉(zhuǎn)換操作和輸出操作來定義流計算。流計算過程通常是由用戶自定義實現(xiàn)的,需要調(diào)用各種DStream操作實現(xiàn)用戶處理邏輯;3)調(diào)用StreamingContext對象的start()方法來開始接收數(shù)據(jù)和處理流程;4)通過調(diào)用StreamingContext對象的awaitTermination()方法來等待流計算進(jìn)程結(jié)束,或者可以通過調(diào)用StreamingContext對象的stop()方法來手動結(jié)束流計算進(jìn)程。創(chuàng)建StreamingContext對象77.1創(chuàng)建StreamingContext對象在RDD編程中需要生成一個SparkContext對象,如果要運(yùn)行一個SparkStreaming程序,就需要首先生成一個StreamingContext對象,它是SparkStreaming程序的主入口。SparkStreaming數(shù)據(jù)源88.1基本數(shù)據(jù)源(1)文件流對于從任何與HDFSAPI(HDFS、S3、NFS等)兼容的文件系統(tǒng)上的文件中讀取數(shù)據(jù),可以通過以下方式創(chuàng)建DStream:streamingContext.fileStream[KeyClass,ValueClass,InputFormatClass](dataDirectory)SparkStreaming將監(jiān)視目錄dataDirectory并處理在該目錄中的所有文件。對于簡單的文本文件,可以使用以下方式創(chuàng)建DStream:streamingContext.textFileStream(dataDirectory)8.1基本數(shù)據(jù)源(2)Socket流通過監(jiān)聽Socket端口接收數(shù)據(jù),例如以下代碼,從本地的9999端口接收數(shù)據(jù):8.1基本數(shù)據(jù)源(2)Socket流通過監(jiān)聽Socket端口接收數(shù)據(jù),例如以下代碼,從本地的9999端口接收數(shù)據(jù):8.1基本數(shù)據(jù)源(3)RDD隊列流使用streamingContext.queueStream(queueOfRDDs)可以基于RDD隊列創(chuàng)建DStream。推入隊列的每個RDD將被視為DStream中的一批數(shù)據(jù),并像流一樣進(jìn)行處理。8.1基本數(shù)據(jù)源(3)RDD隊列流8.1基本數(shù)據(jù)源(3)RDD隊列流8.2高級數(shù)據(jù)源SparkStreaming可以從Kafka、Flume、Kinesis等數(shù)據(jù)源讀取數(shù)據(jù),使用時需要引入第三方依賴庫,此類數(shù)據(jù)源稱為高級數(shù)據(jù)源。SparkStreaming程序示例99.1SparkStreaming程序示例假設(shè)需要監(jiān)聽TCPSocket端口的數(shù)據(jù),實時計算接收到的文本數(shù)據(jù)中的單詞數(shù),具體的實現(xiàn)步驟如下:(1)導(dǎo)入相應(yīng)類9.1SparkStreaming程序示例(2)創(chuàng)建StreamingContext9.1SparkStreaming程序示例(3)創(chuàng)建DStream使用StreamingContext可以創(chuàng)建一個輸入DStream,它表示來自TCP源的流數(shù)據(jù)。例如,從主機(jī)名為localhost、端口為9999的TCP源獲取數(shù)據(jù),代碼如下:JavaReceiverInputDStream<String>

lines

=

jssc.socketTextStream("localhost",9999);9.1SparkStreaming程序示例(4)操作DStreamDStream創(chuàng)建成功后,可以對DStream應(yīng)用算子操作,生成新的DStream,類似對RDD的操作。例如,按空格字符將每一行文本分割為單詞,代碼如下:JavaDStream<String>words=lines.flatMap(x->Arrays.asList(x.split("")).iterator());9.1SparkStreaming程序示例(5)啟動SparkStreaming在DStream的創(chuàng)建與轉(zhuǎn)換代碼編寫完畢后,需要啟動SparkStreaming才能真正地開始計算,因此需要在最后添加以下代碼://開始計算ssc.start()//等待計算結(jié)束ssc.awaitTermination()至此,一個簡單的單詞計數(shù)例子就完成了。9.1SparkStreaming程序示例(6)使用nc模擬端口netcat(或簡稱nc)是一個功能強(qiáng)大且易于使用的程序,可用于Linux中與TCP、UDP或UNIX域套接字相關(guān)的任何事情。本例測試方式為:nc-l9999一行行輸入句子,觀察應(yīng)用程序的運(yùn)行結(jié)果。本章小結(jié)本章主要介紹了流計算SparkStreaming,Spark作為下一代大數(shù)據(jù)處理引擎,現(xiàn)已成為當(dāng)今大數(shù)據(jù)領(lǐng)域非?;钴S、高效的大數(shù)據(jù)計算平臺。包括流計算概述、流計算的概念、Spark概述、Spark運(yùn)行時架構(gòu)——SparkStandalone架構(gòu)、SparkStreaming流計算、編寫SparkStreaming程序的基本步驟、創(chuàng)建StreamingContext對象、SparkStreaming數(shù)據(jù)源、SparkStreaming程序示例。通過本章的學(xué)習(xí),希望大家能夠熟悉SparkStreaming的相關(guān)內(nèi)容,后續(xù)我們將基于本章介紹的內(nèi)容進(jìn)行大數(shù)據(jù)技術(shù)的進(jìn)一步學(xué)習(xí)。第九章數(shù)據(jù)可視化《大數(shù)據(jù)技術(shù)基礎(chǔ)教程》學(xué)習(xí)目標(biāo)/Target了解可視化概述了解可視化的重要作用掌握可視化工具掌握可視化典型案例章節(jié)概述/

Summary可視化技術(shù)為大數(shù)據(jù)分析提供了一種更加直觀的挖掘、分析與展示手段,有助于發(fā)現(xiàn)大數(shù)據(jù)中蘊(yùn)含的規(guī)律,在各行各業(yè)均得到了廣泛的應(yīng)用。目錄/Contents010203可視化概述可視化的重要作用可視化工具04可視化典型案例可視化概述11.1可視化概述

數(shù)據(jù)可視化與信息圖形、信息可視化、科學(xué)可視化及統(tǒng)計圖形密切相關(guān)。數(shù)據(jù)可視化與計算機(jī)圖形學(xué)、計算機(jī)視覺等學(xué)科相比,既有相同之處,也有顯著區(qū)別。數(shù)據(jù)可視化主要是通過計算機(jī)圖形圖像等技術(shù)手段展現(xiàn)數(shù)據(jù)的基本特征和隱含規(guī)律,輔助人們更好地認(rèn)識和理解數(shù)據(jù),進(jìn)而支持從龐雜混亂的數(shù)據(jù)中獲得需要的領(lǐng)域信息和知識??梢暬闹匾饔?2.1可視化的重要作用在大數(shù)據(jù)時代,可視化技術(shù)可以支持實現(xiàn)多種不同的目標(biāo)。(1)觀測、跟蹤數(shù)據(jù)(2)分析數(shù)據(jù)(3)輔助理解數(shù)據(jù)(4)增強(qiáng)數(shù)據(jù)吸引力可視化工具33.1入門級工具Excel是微軟公司的辦公軟件Office家族的系列軟件之一,可以進(jìn)行各種數(shù)據(jù)的處理、統(tǒng)計分析和輔助決策操作,已經(jīng)廣泛地應(yīng)用于管理、統(tǒng)計、金融等領(lǐng)域。Excel是日常數(shù)據(jù)分析工作中最常用的工具,簡單易用,用戶不需要復(fù)雜的學(xué)習(xí)就可以輕松使用Excel提供的各種圖表功能,尤其是制作折線圖、餅狀圖、柱狀圖、散點圖等各種統(tǒng)計圖表時,Excel是普通用戶的首選工具。3.2信息圖表工具(1)TableauTableau是桌面系統(tǒng)中最簡單的商業(yè)智能工具軟件,更適合企業(yè)和部門進(jìn)行日常數(shù)據(jù)報表和數(shù)據(jù)可視化分析工作。Tableau實現(xiàn)了數(shù)據(jù)運(yùn)算與美觀的圖表的完美結(jié)合,用戶只要將大量數(shù)據(jù)拖放到數(shù)字“畫布”上,轉(zhuǎn)眼間就能創(chuàng)建好各種圖表。3.2信息圖表工具(1)Tableau1).條形圖3.2信息圖表工具(1)Tableau2).餅圖3.2信息圖表工具(2)EChartsECharts,一個使用JavaScript實現(xiàn)的開源可視化庫,可以流暢的運(yùn)行在PC和移動設(shè)備上,兼容當(dāng)前絕大部分瀏覽器(IE9/10/11,Chrome,F(xiàn)irefox,Safari等),底層依賴矢量圖形庫

ZRender,提供直觀,交互豐富,可高度個性化定制的數(shù)據(jù)可視化圖表。3.2信息圖表工具(2)ECharts3.2信息圖表工具(2)ECharts3.3地圖工具(1)ModestMapsModestMaps是一個小型、可擴(kuò)展、交互式的免費庫,提供了一套查看衛(wèi)星地圖的API,只有10KB大小,是目前最小的可用地圖庫。它也是一個開源項目,有強(qiáng)大的社區(qū)支持,是在網(wǎng)站中整合地圖應(yīng)用的理想選擇。(2)LeafletLeaflet是一個小型化的地圖框架,通過小型化和輕量化來滿足移動網(wǎng)頁的需要。3.4時間線工具(1)TimetoastTimetoast是在線創(chuàng)作基于時間軸事件記載服務(wù)的網(wǎng)站,提供個性化的時間線服務(wù),可以用不同的時間線來記錄你某個方面的發(fā)展歷程、心理路程、進(jìn)度過程等。(2)XtimelineXtimeline是一個免費的繪制時間線的在線工具網(wǎng)站,操作簡便,用戶通過添加事件日志的形式構(gòu)建時間表,同時也可給日志配上相應(yīng)的圖表。3.5高級分析工具(1)RR是屬于GNU系統(tǒng)的一個自由、免費、源代碼開放的軟件,是一個用于統(tǒng)計計算和統(tǒng)計制圖的優(yōu)秀工具,使用難度較高。R語言的主要功能包括數(shù)據(jù)存儲和處理系統(tǒng)、駐足運(yùn)算工具(其向量、矩陣運(yùn)算方面功能尤其強(qiáng)大)、完整連貫的統(tǒng)計分析工具、優(yōu)秀的統(tǒng)計制圖功能、簡便而強(qiáng)大的編程語言以及可操縱數(shù)據(jù)的輸入和輸出等功能。3.5高級分析工具(1)R3.5高級分析工具(2)WekaWeka是一款免費的、基于Java環(huán)境的、開源的機(jī)器學(xué)習(xí)以及數(shù)據(jù)挖掘軟件,不但可以進(jìn)行數(shù)據(jù)分析,還可以生成一些簡單圖表。(3)pythonPyhton是一款簡單易學(xué)的編程類工具,同時,其編寫的代碼具有簡潔性、易讀性和易維護(hù)性等優(yōu)點。Matplotlib是Python的繪圖庫,是用于生成出版質(zhì)量級別圖形的桌面繪圖包,讓用戶很輕松地將數(shù)據(jù)圖形化,同時還提供多樣化的輸出格式。3.5高級分析工具(3)python可視化典型案例44.1編程語言之間的影響力關(guān)系圖通過TIOBE的

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論