簡體   English   中英

使用Spark檢測大型數據集中的重復連續值

[英]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處理各個分區,跟蹤每個分區的前導/尾隨模式
    • 調整最終結果以包括跨越多個分區的模式
  • 在創建使用排序的數據固定大小的窗口slidingmllib.rdd.RDDFunctions

    • sortBy (名稱,時間戳)
    • 創建滑動的RDD並過濾覆蓋多個names窗口
    • 檢查是否有任何窗口包含所需的圖案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM