日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据算法 --hadoop/spark数据处理技巧 --(二次排序问题和TopN问题)

發布時間:2025/3/16 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据算法 --hadoop/spark数据处理技巧 --(二次排序问题和TopN问题) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、二次排序問題。

                      

  MR/hadoop兩種方案:

    1.讓reducer讀取和緩存給個定鍵的所有值(例如,緩存到一個數組數據結構中,)然后對這些值完成一個reducer中排序。這種方法不具有可伸縮性,因為reducer要接受一個給定鍵的所有值,這種方法可能導致reducer的內存耗盡(OOM)。另一方面,如果值數量很少,就不會導致內存溢出,那么這種方法可行。

    2.使用MR框架對reducer的值排序(這樣一來,就不再需要對傳入reducer的值完成排序。)這種方法“會為自然鍵增加部分或整個值來創建一個組合鍵以實現排序目標”(參考 java Code Geeks)。這種方法可伸縮,不會產生內存溢出錯誤。在這里,排序工作基本上由MR框架來完成。

    ? ?使用MR框架的二次排序設計模式,規約器值到達時就是有序地。(也就是說,不再需要在內存中對值進行排序)。這種技術使用了MR框架的洗牌和排序技術完成規約器值的排序。這種解決方案比1更可取,不再依賴內存完成排序?!   ?/p>

    思考分析:對返回數據形式進行分析,自定義對象和reducer的分區策略。(當然為了實現排序,要對自定義的對象進行實現comparele接口,重寫compare方法。)

?

  spark兩種方案:

    1.將一個給定鍵的所有值讀取緩存到一個List數組結構中,然后對這些值完成排序。優缺點同MR方案1.

    2.使用Spark框架對規約器值排序(這種做法不需要對傳入規約器的值完成規約器中排序)。這種方法“會為自然建增加部分或整個值來創建一個組合鍵以實現排序目標?!?/p>

?

二。 Top N問題。

  列表L的TopN 算法大致描述:L列表的元素是一個scala的tuple結構,通過java的TreeMap將一個tuple添加到其中,然后對TreeMap進>N的if操作,來進行remove操作。

  1.唯一鍵。

    例子:

        

    在這個問題上,可以使用一個規約器完成對所有數據的接收,所有壓力和負載全部是都在這一個節點上。在這里不糊帶來性能問題,為什么呢。假設有由1000個映射,每個映射器只會生成10個鍵值對,因為,這個規約器只會得到10*1000個記錄,這個數據量還不至于導致性能瓶頸。

                      

    2.非唯一鍵

?      例子:

        

      topN設計模式:這里假設所有K不是唯一的,主要步驟:

        ①。確保所有K是唯一的。要保證K是唯一的(存在不唯一的,直接把相同的K的V相加。),我們要把輸入映射到JavaPairRDD<K,V>對,然后交給reduceByKey().

        ②。將所有唯一的(K,V)對劃分為M個分區。

       ?、?。找出個個分區的Top N。

       ?、堋U页鏊斜镜豻opN的最終top N.

      

      

轉載于:https://www.cnblogs.com/dhName/p/11351718.html

總結

以上是生活随笔為你收集整理的数据算法 --hadoop/spark数据处理技巧 --(二次排序问题和TopN问题)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。