2017-08-04 111 views
1

我正在學習使用「學習火花流媒體」一書的火花流媒體。在本書中,我在關於Dstream,RDD,塊/分區的部分中找到以下內容。學習火花流媒體

最後,在此架構掩蓋了一個重要的一點是,接收器接口也具有連接到遞送的數據段的集合(認爲陣列)數據源的選項。例如,這在一些反序列化應用中特別重要。在這種情況下,Receiver不會經歷塊間隔等待處理將數據分割成分區,而是認爲整個集合反映了將數據分割成塊,併爲集合的每個元素創建一個塊。該操作對數據生產者部分要求很高,因爲它要求以塊間隔與批間隔的比例生產塊以可靠地運行(在每批中提供正確數量的塊)。但有些人已經發現它可以提供卓越的性能,提供了一個能夠快速生成許多可用於序列化的塊的實現。

我一直在打我的頭,不能簡單地理解作者在說什麼,雖然我覺得我應該理解它。有人能給我一些指示嗎?

回答

1

披露:我是該書的合着者。

我們想要表達的是,自定義接收器API有兩種工作模式:一種是生產端一次發送一個消息,另一種是接收器可以一次發送多個消息(批量)。

  • 在one-message-at-time模式下,Spark負責緩衝並將數據收集到塊中以供進一步處理。
  • 在批量模式下,緩衝和分組的負擔在生產方面,但在某些情況下它可能更有效。

這反映在API中:

def store(dataBuffer: ArrayBuffer[T]): Unit 
    Store an ArrayBuffer of received data as a data block into Spark's memory. 

def store(dataItem: T): Unit 
    Store a single item of received data to Spark's memory. 

我同意你的看法,該段是費解,可能無法傳達,因爲我們想爲明確的消息。我會照顧好它。

感謝您的反饋!

+0

謝謝你,我明白了。但是可以澄清:「這在某些反序列化用途中特別重要」,可以給出例如 – MaatDeamon