案例1 :假設乙個檔案中有9億條不重複的9位整數,現在要求對這個檔案進行排序。
方法:bit 位操作
首先32位機的定址能力是 2的32次方, 即4g.定址能力最大是這樣了.
乙個最大的9位整數為999999999
這9億條資料是不重複的
宣告乙個bit陣列,長度為10億
一共需要10億 / 8 / 1024 /1024 =120m
把記憶體中的資料全部初始化為0
讀取檔案中的資料,並將資料放入記憶體。比如讀到乙個資料為341245909這個資料,那就先在記憶體中找到341245909這個bit,並將bit值置為1
遍歷整個bit陣列,將bit為1的陣列下標存入檔案
然後再遍歷一次,找出不為零的就可以了.
注意:如果是有重複的數字,
需要考慮重複的情況
如果普遍多於2個,那麼就要設定包含2個bit的陣列
或者使用bitmap型別.
例如 5 :0000 0000 0000 0000 0000 0000 0000 0101
現在引入bitmap,所謂bitmap就是用乙個bit來表示乙個資料。平時32位儲存乙個資料,我們可以換一種想法,用乙個位元組32位來儲存0-31這32個資料,例如我們對2,1,5,12這四個資料進行由小到大的排序,首先把32位初始化為0,我們可以把這4個資料儲存為0000 0000 0000 0000 0001 0000 0010 0110
我們就把32位中的分別把 2 1 5 12位置為1,然後從第0位開始遍歷,看相應位是否為1,為1就進行輸出,就完成了資料從小到大的排序。
再返回原題應用bitmap就可以把16gb的儲存空間縮小為16gb/32 = 512m,就可以大大減少讀取檔案的工作。直接讀一次檔案存入記憶體,然後遍歷輸出就完成了排序。
優點:既大量節省了空間,又把時間複雜度降低到o(n)。
不足:如果資料過於稀疏就會有大量無用遍歷,浪費時間。
大資料處理題型分析
解題思路 有100億個整數,乙個整數4位元組,共所佔空間 100億 4位元組 10g 4 40g 所有整數的範圍為0到42億9千萬 需要找到只出現一次的整數,那麼我們就可以直接斷定乙個數出現的狀態就有三個 沒有出現,出現1次,出現1次以上。三種狀態用兩個二進位制位足以表示 使用點陣圖的變形就可完成這...
大資料處理
大資料處理的流程主要包括以下四個環節 採集 匯入 預處理 統計 分析 挖掘,下面針對這四環節進行簡單闡述。大資料處理之一 採集 在大資料的採集過程中,其主要特點和挑戰是併發數高,因為同時有可能會有成千上萬的使用者來進行訪問和操作,比如火車票售票 和 它們併發的訪問量在峰值時達到上百萬,所以需要在採集...
大資料處理隨筆
1.mssql當資料庫資料超過1000萬的時候超時是正常的,所以當表資料到1000萬時候注意delete 2.今天遇到資料庫時間格式2014021000 當然是int型別哦 3.聯合索引使用 開始時間與結束時間這樣一起查詢的要建成索引 4.訂閱資料庫,只可以查詢操作,這樣的話可以在這個表上面建立索引...