日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

2021年大数据Spark(三十五):SparkStreaming数据抽象 DStream

發布時間:2023/11/28 生活经验 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2021年大数据Spark(三十五):SparkStreaming数据抽象 DStream 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

SparkStreaming數據抽象-DStream?

DStream?是什么

DStream Operations

Transformation

Output函數


SparkStreaming數據抽象-DStream?

DStream?是什么

Spark Streaming的核心是DStream,DStream類似于RDD,它實質上一系列的RDD的集合,DStream可以按照秒、分等時間間隔將數據流進行批量的劃分

如下圖所示:將流式數據按照【X seconds】劃分很多批次Batch,每個Batch數據封裝到RDD中進行處理分析,最后每批次數據進行輸出

?

對于目前版本的Spark Streaming而言,其最小的Batch Size的選取在0.5~5秒鐘之間,所以Spark Streaming能夠滿足流式準實時計算場景,對實時性要求非常高的如高頻實時交易場景則不太適合。

?

DStream代表了一種連續的數據流,要么從某種數據源提取數據,要么從其他數據流映射轉換而來。DStream內部是由一系列連續的RDD組成的,每個RDD都包含了特定時間間隔內的一批數據,

DStream是不間斷的?連續的數據對象(內容是無邊界的)

如下圖所示:

?

DStream本質上是一個:一系列時間上連續的RDD(Seq[RDD]),DStream = Seq[RDD]

DStream = Seq[RDD]

?DStream相當于一個序列(集合),里面存儲的數據類型為RDD(Streaming按照時間間隔劃分流式數據)

對DStream的數據進行操作也是按照RDD為單位進行的

?

??通過WEB UI界面可知,對DStream調用函數操作,底層就是對RDD進行操作,發現很多時候DStream中函數與RDD中函數一樣的。

?

DStream中每批次數據RDD在處理時,各個RDD之間存在依賴關系,DStream直接也有依賴關系,RDD具有容錯性,那么DStream也具有容錯性。

?

上圖相關說明:

?1)、每一個橢圓形表示一個RDD

?2)、橢圓形中的每個圓形代表一個RDD中的一個Partition分區

?3)、每一列的多個RDD表示一個DStream(圖中有三列所以有三個DStream)

?4)、每一行最后一個RDD則表示每一個Batch Size所產生的中間結果RDD

Spark Streaming將流式計算分解成多個Spark Job,對于每一時間段數據的處理都會經過Spark DAG圖分解以及Spark的任務集的調度過程。

?

???????DStream Operations

?

?DStream#Output Operations:將DStream中每批次RDD處理結果resultRDD輸出

DStream類似RDD,里面包含很多函數,進行數據處理和輸出操作,主要分為兩大類:

???????Transformation

大多數和RDD中的類似,有一些特殊的針對特定類型應用使用的函數,比如updateStateByKey狀態函數、window窗口函數等,后續具體結合案例講解。

http://spark.apache.org/docs/2.4.5/streaming-programming-guide.html#transformations-on-dstreams

?

?

?

Transformation

Meaning

map(func)

對DStream中的各個元素進行func函數操作,然后返回一個新的DStream

flatMap(func)

與map方法類似,只不過各個輸入項可以被輸出為零個或多個輸出項

filter(func)

過濾出所有函數func返回值為true的DStream元素并返回一個新的DStream

union(otherStream)

將源DStream和輸入參數為otherDStream的元素合并,并返回一個新的DStream.

reduceByKey(func, [numTasks])

利用func函數對源DStream中的key進行聚合操作,然后返回新的(K,V)對構成的DStream

join(otherStream, [numTasks])

輸入為(K,V)、(K,W)類型的DStream,返回一個新的(K,(V,W)類型的DStream

transform(func)

通過RDD-to-RDD函數作用于DStream中的各個RDD,可以是任意的操作,從而返回一個新的RDD

?

???????Output函數

?????

http://spark.apache.org/docs/2.4.5/streaming-programming-guide.html#output-operations-on-dstreams

?

Output Operation

Meaning

print()

打印到控制臺

saveAsTextFiles(prefix, [suffix])

保存流的內容為文本文件,文件名為"prefix-TIME_IN_MS[.suffix]".

saveAsObjectFiles(prefix,[suffix])

保存流的內容為SequenceFile,文件名為 "prefix-TIME_IN_MS[.suffix]".

saveAsHadoopFiles(prefix,[suffix])

保存流的內容為hadoop文件,文件名為"prefix-TIME_IN_MS[.suffix]".

foreachRDD(func)

對Dstream里面的每個RDD執行func

總結

以上是生活随笔為你收集整理的2021年大数据Spark(三十五):SparkStreaming数据抽象 DStream的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。