2017-09-02 205 views
2

我想知道我是否可以直接在Google Dataflow平臺中緩存數據集(例如在Spark中緩存RDD)。緩存數據流中的數據集

如果沒有這樣的功能,Dataflow如何在應用程序中挑選熱門數據集,特別是如果您有多個熱門數據集,並且您想根據數據集的重要性優先緩存?

回答

2

數據流與Spark的執行模型非常不同。在Spark中,中心概念是RDD,RDD的典型工作模式是以不可預知的方式交互式查詢;因此,RDD需要緩存,可能由用戶控制。

在數據流(Apache的束)中,中央的概念是一個Pipeline,建造和優化,爲單片整體,其中PCollection(最接近的類似物RDD)僅僅是在管道中的邏輯節點執行。

這兩種方法都有它們的優點,但Dataflow的方法使Dataflow知道在管道中如何使用PCollection,因此不存在不可預測性,並且不需要緩存策略。

數據流當前在Google雲端存儲的臨時文件中實現了一些中間PCollection s,儘量避免使用fusion進行實現。如果PCollection已實現,則處理此集合的管道階段需要從雲存儲中讀取;否則(如果舞臺與產生數據集的舞臺融合),它將在數據集內存中處理元素,立即生成它們,共同位於產生它們的工作人員。

GroupByKey操作和相似(例如Combine)是特殊的:數據流有幾個實現GroupByKey,在批處理和流式管道之間不同;他們要麼使用虛擬機上的本地磁盤來存儲數據,要麼使用high-performance Google internal infrastructure

+0

感謝尤金的迴應。這是一個巨大的斷言:「不存在不可預測性......」;這使得該平臺適用於實時系統。請您告訴我是否可以在任何研究出版物(例如Flume或Millwheel)中找到有關可預測性的更多信息。主要的問題是我們沒有任何控制調整部分,除了選擇具有更大內存的實例類型。如何基於輸入數據集創建成本模型?只有實驗?我如何說服我的客戶我的Dataflow模型是經過優化的並且具有成本效益?謝謝。 – AmirCS

+1

嗯我的意思只是,集合的訪問模式是可預測的,就像SQL數據庫在執行查詢之前知道整個查詢計劃一樣。還有很多其他的不可預測性:數據大小和分佈,用戶代碼處理持續時間等。「爲什麼光束幾乎沒有暴露任何調諧旋鈕」是一個很好的問題,但超出了評論的範圍,隨意提出一個單獨的SO問題:) – jkff