《Spark應(yīng)用開發(fā)技術(shù)》課件-02-掌握Dstram編程模型_第1頁
《Spark應(yīng)用開發(fā)技術(shù)》課件-02-掌握Dstram編程模型_第2頁
《Spark應(yīng)用開發(fā)技術(shù)》課件-02-掌握Dstram編程模型_第3頁
《Spark應(yīng)用開發(fā)技術(shù)》課件-02-掌握Dstram編程模型_第4頁
《Spark應(yīng)用開發(fā)技術(shù)》課件-02-掌握Dstram編程模型_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Spark應(yīng)用開發(fā)技術(shù)本章主要講述SparkStreaming實時計算框架、Dstream編程模型。通過學習本節(jié)將能夠?qū)W習SparkStreaming實時計算框架、Dstream編程模型。通過本節(jié)學習可以:理解SparkStreaming的基本概念及運行原理掌握Dstream的轉(zhuǎn)換操作掌握Dstream的窗口操作掌握Dstream的輸出操作初探SparkStreamingSparkStreaming簡介Spark

Streaming運行原理初步使用SparkStreaming掌握Dstream編程模型Dstream簡介Dstream轉(zhuǎn)換操作Dstream窗口操作Dstream輸出操作3.

Spark

Streaming實時更新熱門博文DStream簡介SparkStreaming提供了一個高層次的抽象叫做離散流(discretizedstream)或者DStream,代表了持續(xù)性的數(shù)據(jù)流DStream可以通過外部數(shù)據(jù)源(Kafka,F(xiàn)lume,Twitter等)來獲取,也可以通過現(xiàn)有DStream的高級操作(Transformation操作)獲得在內(nèi)部,DStream代表著一系列的持續(xù)的RDDsDStream中的每個RDD都是一小段時間(interval)分割開來的數(shù)據(jù)集掌握Dstream編程模型DStream簡介對DStream的任何操作都會轉(zhuǎn)化成對底層RDDs的操作例如,對linesDStream做flatMap操作,實際上就是對它內(nèi)部的所有RDD做flatMap操作。即對DStream的操作可以通過RDD的Transformation生成新的DStream。掌握Dstream編程模型DStream轉(zhuǎn)換操作掌握Dstream編程模型DStream轉(zhuǎn)換操作掌握Dstream編程模型DStream轉(zhuǎn)換操作以上列出的這些操作,大部分(如map,flatMap,filter等)與RDD的轉(zhuǎn)換操作類似transform(func)方法值得深入地探討transform操作極大地豐富了DStream上能夠進行的操作內(nèi)容。使用transform操作后,除了可以使用DStream提供的一些轉(zhuǎn)換方法之外,還能夠直接調(diào)用任意RDD上的操作方法。掌握Dstream編程模型DStream轉(zhuǎn)換操作使用transform將一行語句分割成單詞掌握Dstream編程模型DStream轉(zhuǎn)換操作在slave18888端口上輸入“IamlearningSparkStreamingnow”語句運行結(jié)果如圖所示,該語句在5s內(nèi)被分割成單詞掌握Dstream編程模型DStream窗口操作窗口函數(shù),就是在DStream流上,以一個可配置的長度為窗口,以一個可配置的速率向前移動窗口,根據(jù)窗口函數(shù)的具體內(nèi)容,對窗口內(nèi)的數(shù)據(jù)執(zhí)行計算操作,每次掉落在窗口內(nèi)的RDD的數(shù)據(jù)會被聚合起來執(zhí)行計算操作,然后生成的RDD會作為WindowDStream的一個RDD。下圖表述的是滑動窗口長度為3秒,這三秒內(nèi)的3個RDD會被聚合起來進行處理,然后過了兩秒鐘,又會對最近三秒內(nèi)的數(shù)據(jù)執(zhí)行滑動窗口計算。所以每個滑動窗口操作,都必須指定兩個參數(shù),窗口長度以及滑動間隔,而且這兩個參數(shù)值都必須是batch(批處理時間)間隔的整數(shù)倍。掌握Dstream編程模型DStream窗口操作常用的窗口轉(zhuǎn)換操作方法如表所示這些操作都需要兩個參數(shù),windowLength(窗口長度)和slideInterval(時間間隔)。掌握Dstream編程模型DStream窗口操作掌握Dstream編程模型DStream窗口操作以window(windowLength,slideInterval)為例設(shè)置窗口長度為3s,滑動時間間隔為1s,截取源DStream中的元素形成新的DStream掌握Dstream編程模型DStream窗口操作掌握Dstream編程模型在slave1上啟動監(jiān)聽,基本上每秒輸入一個字母,然后取出當前時刻3秒這個長度中的所有元素,打印出來如圖所示,從圖中可以看到,到第4秒時已經(jīng)不到a了,再下一秒就看不到b了,這說明此時a和b已經(jīng)不在當前窗口中。DStream窗口操作reduceByKeyAndWindow(func,windowLength,slideInterval,[numTasks])操作類似reduceByKey操作,只不過兩者操作的數(shù)據(jù)源不同,reduceByKeyAndWindow的數(shù)據(jù)源是基于該DStream的窗口長度中的所有數(shù)據(jù)。將當前長度為3的時間窗口中的所有數(shù)據(jù)元素根據(jù)key進行合并,統(tǒng)計當前3秒中內(nèi)不同單詞出現(xiàn)的次數(shù)。掌握Dstream編程模型DStream窗口操作掌握Dstream編程模型DStream窗口操作掌握Dstream編程模型運行結(jié)果如圖所示從圖中可以看出,到了第4s,最前面的兩個a已經(jīng)不在當前窗口中,所以沒有打印出a的計數(shù)。DStream輸出操作掌握Dstream編程模型DStream輸出操作saveAsTextFiles、saveAsObjectFiles和saveAsHadoopFiles操作可以將DStream中的內(nèi)容保存為文本文件每個batch的數(shù)據(jù)單獨保存為一個文夾,其中prefix為文件夾名前綴,文件夾名前綴參數(shù)必須傳入,[suffix]為文件夾名后綴,文件夾名后綴參數(shù)可選,最終文件夾名稱的完整形式為prefix-TIME_IN_MS[.suffix]。如果前綴中包含文件完整路徑,則該text文件夾會建在指定路徑下。saveAsTextFiles以文本的形式保存DStream中的內(nèi)容,可以保存在任何文件系統(tǒng)saveAsObjectFiles是以序列化的格式保存saveAsHadoopFiles是以文本的形式保存在HDFS上。掌握Dstream編程模型DStream輸出操作將nc窗口中輸出的內(nèi)容保存在HDFS的/user/root/saveAsTextFiles文件夾下,設(shè)置每秒生成一個文件夾掌握Dstream編程模型DStream輸出操作保存結(jié)果如圖所示掌握Dstream編程模型DStream輸出操作foreachRDD是DStream提供的一個功能強大的方法,它可以將數(shù)據(jù)發(fā)送到外部系統(tǒng),在使用foreachRDD的過程中需避免以下錯誤通常將數(shù)據(jù)寫入到外部系統(tǒng)需要創(chuàng)建一個連接對象(如TCP連接到遠程服務(wù)器),并用它來發(fā)送數(shù)據(jù)到遠程系統(tǒng)。在創(chuàng)建連接對象時應(yīng)避免在Sparkdriver端創(chuàng)建連接對象,代碼如下所示,這種做法需要連接對象進行序列化并從Driver端發(fā)送到Worker上,但是連接對象很少在不同機器間進行這種操作掌握Dstream編程模型DStream輸出操作foreachRDD是DStream提供的一個功能強大的方法,它可以將數(shù)據(jù)發(fā)送到外部系統(tǒng),在使用foreachRDD的過程中需避免以下錯誤針對以上所說的錯誤,正確的解決方法是在Worker上創(chuàng)建連接對象,如代碼所示,但是這種做法又會引發(fā)另外一種錯誤,即為每一個記錄創(chuàng)建一個連接對象。通常,創(chuàng)建一個連接對象會有時間和資源的開銷,因此,為每個記錄創(chuàng)建和銷毀連接對象會導致非常高的開銷,減少系統(tǒng)的整體吞吐量。掌握Dstream編程模型DStream輸出操作foreachRDD的正確用法:使用rdd.foreachPartition方法創(chuàng)建一個單獨的連接對象,然后使用該連接對象輸出所有RDD分區(qū)中的數(shù)據(jù)到外部系統(tǒng)。這不僅可以緩解創(chuàng)建多條記錄連接的開銷,還可以通過在多個RDDs/batches上重用連接對象進行優(yōu)化。掌握Dstream編程模型DStream輸出操作以網(wǎng)站熱詞排名為例,介紹如何正確使用foreachPartition將處理結(jié)果寫到MySQL數(shù)據(jù)庫中。首先在MySQL數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)庫和表用以接收處理后的數(shù)據(jù)新建的表searchKeyWord表有三個字段,分別為insert_date(插入數(shù)據(jù)的日期),keyword(熱詞),search_count(在設(shè)置的時間內(nèi)出現(xiàn)的次數(shù))。掌握Dstream編程模型DStream輸出操作在IntelliJIDEA中編寫Spark代碼,設(shè)置窗口長度為60秒,窗口滑動時間間隔為10秒,計算10秒內(nèi)每個單詞出現(xiàn)的次數(shù),然后根據(jù)出現(xiàn)的次數(shù)對單詞進行排序雖然DStream沒有提供sort的方法,但是可以使用transform函數(shù),用RDD的sortByKey實現(xiàn)。接著需要使用foreachPartition創(chuàng)建MySQL數(shù)據(jù)庫連接對象然后使用該連接對象輸出數(shù)據(jù)到searchKeyWord表中掌握Dstream編程模型DStream輸出操作

溫馨提示

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

評論

0/150

提交評論