海量數據處理算法(top K問題)
舉例
有一個1G大小的一個文件,裏面每一行是一個詞,詞的大小不超過16字節,內存限制大小是1M。返回頻數最高的100個詞。
思路
- 首先把文件分開
- 針對每個文件hash遍歷,統計每個詞語的頻率
- 使用堆進行遍歷
- 把堆歸並起來
具體的方案
1.分治:
順序讀文件中,對於每個詞c,取hash(c)%2000,然後按照該值存到2000個小文件中。這樣每個文件大概是500k左右。
註意:
如果其中的有的文件超過了1M大小,還可以按照類似的方法繼續往下分,直到分解得到的小文件的大小都不超過1M。
2.hash遍歷:
對每個小文件,用hash的方式統計每個文件中出現的詞以及相應的頻率
3.堆遍歷:
用 最小堆取出出現頻率最大的100個詞,並把100個詞及相應的頻率存入文件,這樣又得到了5000個文件。
4.歸並整合
下一步就是把這5000個文件進行歸並(類似與歸並排序)的過程了。
海量數據處理算法(top K問題)
相關推薦
海量數據處理算法(top K問題)
一行 歸並排序 註意 top 返回 詞語 top k 其中 hash 舉例 有一個1G大小的一個文件,裏面每一行是一個詞,詞的大小不超過16字節,內存限制大小是1M。返回頻數最高的100個詞。 思路 首先把文件分開 針對每個文件hash遍歷,統計每個詞語的頻率 使用堆進行
海量數據處理算法—Bloom Filter
內存地址空間 核心 全世界 在服務器 i++ func ras get 地址空間 1. Bloom-Filter算法簡介 Bloom-Filter,即布隆過濾器,1970年由Bloom中提出。它可以用於檢索一個元素是否在一個集合中。 Bloom
海量數據處理算法與面試題
大數 font span view big ons 海量數據 log 12px http://www.jiuzhang.com/tutorial/big-data-interview-questions/163 1.最高頻 K 項問題 2.布隆過濾器 3.外排序算法 4
day40 數據結構-算法(二)
圍墻 dea maxsize 由於 image closed images 哈希函數 鏈表 什麽是數據結構? 簡單來說,數據結構就是設計數據以何種方式組織並存儲在計算機中。 比如:列表、集合與字典等都是一種數據結構。 N.Wirth: “程序=數據結構+算法” 列表
數據結構——算法之(031)(將字符串中全部小寫字母排在大寫字母的前面)
函數 返回 mod ont content 內容 print har -h 【申明:本文僅限於自我歸納總結和相互交流,有紕漏還望各位指出。 聯系郵箱:[email protected]/* */ 題目: 函數將字符串中的字符‘*‘移到串的前部分。前面的
數據挖掘算法:關聯分析一(基本概念)
latin ron 來看 關聯 row 集中 items 多個 可能性 一.基本概念 我們來看上面的事務庫,如同上表所示的二維數據集就是一個購物籃事務庫。該事物庫記錄的是顧客購買商品的行為。這裏的TID表示一次購買行為的編號,items表示顧客購買了哪些商品。 事
Java數據結構和算法(十二)——2-3-4樹
oid 樹的高度 n+1 tno != val post 節點數據 isp 通過前面的介紹,我們知道在二叉樹中,每個節點只有一個數據項,最多有兩個子節點。如果允許每個節點可以有更多的數據項和更多的子節點,就是多叉樹。本篇博客我們將介紹的——2-3
Java數據結構和算法(十五)——無權無向圖
java 指示 是我 如果 層次 引用 .com 號碼 mov 前面我們介紹了樹這種數據結構,樹是由n(n>0)個有限節點通過連接它們的邊組成一個具有層次關系的集合,把它叫做“樹”是因為它看起來像一棵倒掛的樹,包括二叉樹、紅黑樹、2-3-4
數據結構常見的八大排序算法(詳細整理)
來看 方式 orm 快速 ams 插入 序列 nsh RR https://www.jianshu.com/p/7d037c332a9d?utm_campaign=hugo&utm_medium=reader_share&utm_content=note&a
STL基礎--算法(不修改數據的算法)
詞典 find ems ear sam \n 第一個 turn heap 不修改數據的算法 count, min and max, compare, linear search, attribute // 算法中Lambda函數很常用: num = count_if(v
STL基礎--算法(修改數據的算法)
rep rate shuffle 範圍 swap 連續 con 謂詞 string 修改元素的算法 copy, move, transform, swap, fill, replace, remove vector<int> vec = {9,60,70,8
數據結構算法練習(一)
func 順序 字符 value () false 刪除重復 n-1 push 目錄 定義數組類實現動態定義長度,添加,插入,編輯,查詢,搜索,排序 #!/usr/bin/python # -*- coding: UTF
海量數據處理:Hash映射 + Hash_map統計 + 堆/快速/歸並排序
針對 內存 value 快速 round div ack 數據處理 訪問 海量日誌數據,提取出某日訪問百度次數最多的那個IP。 既然是海量數據處理,那麽可想而知,給我們的數據那就一定是海量的。 針對這個數據的海量,我們如何著手呢?對的,無非就是分而治之/hash映射 +
數據挖掘 - 算法 - ID3 - 轉自 http://www.cnblogs.com/dztgc/archive/2013/04/22/3036529.html
str htm bar c++代碼 度量 進行 初始化 ++ 預測 1 簡介 決策樹學習是一種逼近離散值目標函數的方法,在這種學習到的函數被表示為一棵決策樹。 2 決策樹表示 決策樹通過把實例從根節點排列到某個葉子結點來分類實例,葉子結點即為實例所屬的分類。樹上的
基本數據結構(算法導論)與python
多重 down begin 既然 string app lis 類型 elif 原文鏈接 Stack, Queue Stack是後進先出, LIFO, 隊列為先進先出, FIFO在Python中兩者, 都可以簡單的用list實現,進, 用append()出, Stack
工具類:關於如何找到兩個List數組中不同的數據的算法!
開發人員 uri print clas 數據結構 blank _id integer public 找到兩個List數組中不同的數據的算法! import java.util.ArrayList;import java.util.HashMap;import java.ut
系統學習數據結構算法
dcs das tps wot names ava logs enter href 決定在 上開始補習基礎, 先加入: https://www.coursera.org/learn/algorithms-part1 其中 Welcome 給出了 BooKSite
編程語言:數據+算法;
結構 clas 函數式編程 gpo 內存管理 編程 基本 架構 管理 數據、類型:基本數據類型、復合數據類型、面向對象數據類型; 算法:控制結構、函數;數據的存取和處理; 數據與算法之上是範式:面向對象、函數式編程; 語言之上是功能(系統使用): 基本的系統使用:內
關於海量數據處理分析的經驗總結
建立 我們 網絡日誌 性能 結構 領域 要花 腳本 實施 對海量的數據進行處理是一項艱巨而復雜的任務。原因有以下幾個方面: 一、數據量過大,數據中什麽情況都可能存在。如果說有10條數據,那麽大不了每條去逐一檢查,人為處理,如果有上百條數據,也可以考
服務器Raid數據恢復成功案例和raid 5數據恢復算法原理
服務器數據恢復 raid數據恢復 磁盤陣列數據恢復 北亞數據恢復中心 服務器Raid 5數據恢復案例本次分享的案例是一臺服務器中的raid磁盤陣列,磁盤陣列中有12塊磁盤,單盤容量500G,ext3文件系統,系統平臺為Linux平臺。Raid中2號盤和6號盤兩塊硬盤報黃燈,管理人員檢查後對6號