大資料排序

2021-08-18 06:14:13 字數 433 閱讀 5732

大資料開發工程師的一道經典面試題

如果待排序資料具有某些特點,往往能夠有更加有效的方法解決。

同時,這種思想也更加貼近大資料應用的思維方式。

對於大資料問題,分而治之的思想十分普遍。同時分布式計算、平行計算等也都類似。

包括hadoop採用的map-reduce模型,分而治之的思想都貫穿其中。

以時間為基準排序,那麼可以把一天的資料存成乙個檔案,或者把固定天數的資料存成乙個檔案,這樣各個檔案之間就是有序的了。

對於這種byte型,或者是其它取值有限且較少的資料,更專業更具體地說,應該是輸入的線性表的元素屬於有限偏序集則可採用計數排序的方法,不過這種方法要求過於苛刻,適用情況少。

乙個典型例子就是成績的統計,特別是那種全是整數的情況。

假設資料共有n種取值:

大資料排序問題

程式描述 1 海量資料,記憶體不足,需要將檔案分割成多個檔案,從磁碟讀入 2 將每個小檔案排好序 3 歸併每個排好序的檔案,合成乙個檔案。include include qsort include include include using namespace std int sort num 10...

大資料排序問題

問題1 從100億個資料中找出前100個資料 分析 由於只要找出前100個資料,可以採用堆來進行處理。堆特別適合的場景是從海量資料中找出前m個最大值或最小值,當m不大的時候效率很高。步驟 1.讀取前100個資料,建立最小堆 最小堆的作用是方便找出目前最大的100個資料中的最小值,把待比較的資料與這個...

大資料的排序問題

楔子 問題 假設乙個檔案中有9億條不重複的9位整數,現在要求對這個檔案進行排序。一般解題思路 1 將資料匯入到記憶體中 2 將資料進行排序 比如插入排序 快速排序 3 將排序好的資料存入檔案 難題 乙個整數為4個位元組即使使用陣列也需要900,000,000 4byte 3.4g記憶體對於32位系統...