嗨,我正在計劃一個部署,其中Spark可以完成處理來自卡夫卡的傳入數據的繁重工作,以將StreamingKMeans應用於異常檢測。Spark與多個KMeans與mapWithState
然而,來自卡夫卡主題的數據來自各種來源,定義了需要不同KMeans模型(狀態)的不同數據結構。因此,傳入離散RDD中的每個條目都應該通過其自己的KMeans模型,基於「密鑰」字段(基本上我需要單個事件處理)。
這種類型的處理可以用Spark來實現嗎?如果是的話,它最終會利用Spark的並行性嗎?我是Spark和Scala的新手,覺得我錯過了一些東西。
在此先感謝。
UPDATE:
我目前正在調查mapWithState
運營商,這似乎解決了這個問題。問題是:我可以直接將StreamingKmeans模型保存到狀態中嗎?否則,我將不得不保存質心並在狀態更新函數中實例化一個新模型,這看起來很昂貴。
非常感謝,因爲它們取決於數據來源,並且運行時由另一個應用程序層添加Kafka源,因此通用性在這個應用程序層中鍵是不可預知的。您的建議是使用第三方選項(任何?)還是轉向Flink?由於Flink在我看來似乎更適合這種情況... – Peterdeka
噢,也許我誤解了,第三方的東西你的意思是不使用Spark和朋友吧?!這是我的第一個選擇...:D – Peterdeka
我偏向這裏。我試過Flink,我不喜歡API設計。忽略這一點,AFAIK並沒有提供任何可以解決這種特殊情況的方法。但我可能是錯的。關於當地的庫存 - 埃爾基總體來說體面,雖然文件不是很好。 – zero323