2015-10-30 50 views
3

RDD是跨羣集節點分區的元素的集合。它是核心組件和抽象。Spark中的RDD和批處理之間的區別?

批次: SparkStreaming API只是簡單地將數據分成批次,批量處理同樣的Streaming對象/元素集合。根據需求定義一組批次,格式爲,基於時間的批次窗口和密集在線基於活動的批量窗口

Rdd &準確的批次是多少?

回答

0

一批實質上是一個RDD,但是在Streaming中,您通常不是在RDD上運行,而是在DStream上運行,它們提供了所提及的基於時間和基於窗口的功能。你必須使用foreachRDD明確地下潛到RDD。

DStream是描述流式作業的抽象概念。在運行時,DStream被轉換爲RDD,因爲Spark Streaming在Spark Core上運行,而Spark只知道如何處理RDD。這就是爲什麼它不是真正的流處理,而是微處理。

+0

在這裏爲什麼批次進入圖片,乳清不是它被認爲是RDD。這意味着RDD不支持流式處理?我可以考慮收集批次是RDD嗎? RDD的順序是DStreaming? –

4

RDD s和批次本質上是不同的,但在Spark中是相關的東西。 正如問題中提到的那樣,RDD是一個基本的Spark概念,因爲它們構成了Spark中分佈式計算的基礎數據結構。

RDD[T] s是分佈在集羣中的分區上的[T]類型的元素的虛擬集合。

在Spark Streaming中,「批處理」是在batchInterval時間內收集數據的結果。數據以「塊」形式收集,塊的大小由配置參數spark.streaming.blockInterval確定。

將這些塊提交給Spark Core引擎進行處理。每個批次的塊集合成爲一個RDD,每個塊是一個RDD分區。

說批次和RDD是同一件事是不正確的。 Spark Streaming批處理數據在提交給Spark Core進行處理時成爲RDD。

+0

你可以在我的Spark Summit 2015演講中看到詳細的解釋:https://www.youtube.com/watch?v = qxsOjJnwcKQ – maasg

+0

我已經參加了演講:)所以一個批次變成一個RDD,並且塊間隔是隻與分區有關? –

+0

@MariusSoutier :-)是的。除了直接的Kafka流,其中每個Kafka分區變成1個火花分區。 – maasg

0

Spark和Spark Streaming(微批處理)的體系結構的基本區別在於。您可能知道,對於離線處理,您不需要Spark Streaming - 這是爲了在線處理數據或在數據到達時創建的,並且這被視爲對小批量數據的連續批量計算。

Spark的創建者決定提供一個名爲DStreams(離散化流)的抽象。這些在內部被表示爲在每個時間步驟到達的RDD序列(例如,0.5秒) - 它們中的每一個都具有流中數據的一個時間片。在每個時間間隔(例如,0.5秒)的開始時創建新的批次 - 當新數據到達時,這屬於該批次 - 直到它結束增長。

從高層角度來看,DStreams提供與RDD相同的操作,但它們提供了與時間相關的其他方法(如滑動窗口)。

PS:我現在看到了YouTube的鏈接。我想這是最好的答案 - 它會徹底解釋你想知道的內容:)

相關問題