搜尋引擎會通過日誌檔案把使用者每次檢索使用的所有檢索串都記錄下來,每個查詢串的長度為1-255位元組。假設目前有一千萬個記錄,這些查詢串的重複度比較 高,雖然總數是1千萬,但如果除去重複後,不超過3百萬個。乙個查詢串的重複度越高,說明查詢它的使用者越多,也就是越熱門。請你統計最熱門的10個查詢 串,要求使用的記憶體不能超過1g。
三百萬的資料大約256*10^6*3<1g,所以可以先使用map對檔案中的內容進行統計
#include #include #include #include #include #include using namespace std;
bool comp(pair& left,pair& right)
file.close();
}void get_top_n(map& i_map,unsigned int n,
vector>*& result)
auto index=i_map.begin();
result=new vector>();
while(n)
while(index!=i_map.end())
else
}}int main(int argc,char* argv)
); system("pause");
return 0;
}
最後:vs2010對c++11的支援太蛋疼了 Spark RDD的方式求TopN
資料 方式一 val lines sc.textfile ruozedata spark core topn site.log val topn 2 val rdd lines.map x reducebykey groupby 1.1 mapvalues x take topn 其中直接x.tol...
OBIEE中的TOPN分析
topn的意思 在某個系統中,有時候需要根據一定的規則對資料進行排序,並從排序列表中選取出最大或最小的n個資料,這就是乙個top n演算法。實現方式 但是在利用topn進行分析時會存在很多細節問題,例如 如果有重複的資料怎麼處理呢?首先,對沒有重複的資料進行topn分析 該部分的實現是比較簡單的。在...
mysql中TopN的實現
要實現topn,必定需要將資料進行分組,再將每個分組裡邊的資料進行排序。其實這個用order by a,b 就能夠對a欄位進行分組,再對b進行排序。排完序之後只需要將前n個就可以了。就像這樣,我們只需要把他們進行排序即可,我們可以建立兩個字段,第乙個字段記錄上乙個subject,第二個字段用來標記當...