[英]Detecting repeating consecutive values in large datasets with Spark
Cheerz,
最近,我正在嘗試Spark,並且到目前為止,我已經觀察到了非常有趣的結果,但是目前,我陷入了著名的groupByKey
OOM問題。 基本上,它所做的工作是嘗試在大型數據集中搜索測量值連續至少N次連續增長的時間段。 通過將結果寫入磁盤,我設法解決了這個問題,但是應用程序現在的運行速度要慢得多(這是由於磁盤IO所預期的)。 現在的問題是:是否有其他內存有效策略可以運行排序后的數據,並檢查至少N次連續觀察中相鄰值(對於同一鍵)是否在增加,而無需使用groupByKey方法?
我已經設計了一種算法來使用reduceByKey
來執行此reduceByKey
,但是有一個問題,reduce似乎忽略了數據排序,最后大喊大叫完全錯誤的結果。
任何想法表示贊賞,謝謝。
有幾種方法可以解決此問題:
repartitionAndSortWithinPartitions
與自定義分區程序和順序:
keyBy
(名稱,時間戳)對 repartitionAndSortWithinPartitions
mapPartitions
遍歷數據並產生匹配序列 sortBy(Key)
-與第一個解決方案相似,但是以更高的粒度提供附加的后處理。
keyBy
(名稱,時間戳)對 sortByKey
mapPartitionsWithIndex
處理各個分區,跟蹤每個分區的前導/尾隨模式 在創建使用排序的數據固定大小的窗口sliding
從mllib.rdd.RDDFunctions
。
sortBy
(名稱,時間戳) names
窗口
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.