如何對乙個大文字進行按每行去重操作

時間 2021-05-31 10:07:26

1樓:myth

TXT文字去重 TXT文字合併 TXT檔案求並集

測試資料大小:20億行130GB的資料只需60分鐘平均去重速度:2000000000(行) ÷ 3600(秒) = 555555(行/秒)≈55萬行/秒

這個速度是網際網路上已知單機版家用型電腦去重速度最快的去重工具軟體

本軟體特點及其描述:

1.平均處理速度60Mb/s(讀寫速度),例如130Gb的txt檔案,大約60分鐘即可完成文字行去重;

2.處理最大文字(txt或者csv)檔案的能力------沒有行數限制,沒有容量限制,輕鬆處理超過1000Gb的文字檔案;

3.一次性可合併去重處理多個大資料檔案,可以對歷史資料進行持續更新公升級,對,沒錯,是對您的大資料檔案進行公升級;

4.自動檔案編碼探測;

5.本軟體是目前網際網路上銷售的單機版文字行去重軟體中去重速度最快的軟體,其它專業性的軟體公司開發的類似產品最快處理速度才5Mb/s而已;

6.標準版與極速版合二為一,實時的百分比處理進度條更新,讓您目測整個操作過程大約需要的時間;

7.獨特的拆分演算法,巧妙構思的快速數學計算模型,讓您的CPU利用率幾乎一直處於50%的線性水平,標準版幾乎能讓記憶體消耗處在7Gb的線性水平;

8.檔案的大小與硬體效能之間關係:是線性關係,對,您沒看錯,不是指數關係,所以處理大資料的能力非常強悍!

以下測速環境:

作業系統:Windows 10 x64

CPU型號:Intel(R) Core(TM) i5-4570 CPU @ 3.2GHz 4核處理器

固態硬碟型號:GLOWAY STK512GS3-S7

記憶體型號:金士頓HyperX 8Gb DDR3 1600 4條記憶體,實際上只使用了1條8Gb的記憶體容量

標準版文字行去重化處理速度(讀/寫)&硬體(固態硬碟,CPU,記憶體條)效能介面截圖:

2樓:何敏堂

可以取到每一行的hash值,然後以hash值作為名字建立檔案,將內容寫進檔案裡邊,寫進檔案裡邊的時候先判斷檔案裡邊是否有這個字串了,有就不寫了。效果主要看hash函式

3樓:梁耀波

在實際的應用中如果能有乙個分布式的平台,就不是問題了。

另外這是乙個經典的面試題,面試題裡要求只用乙個普通的PC來做。那麼可以這樣子:

隨便找乙個字串hash函式,值域在1-n之間。(n的設定稍後再說)

然後根據hash的值建立n個檔案,掃瞄原檔案,每一行都算出對應的hash值,輸出到對應的檔案中去。

這樣子如果原來的的檔案不是非常bias,那麼就會比較均勻的分到n個檔案中去。然後對於每個檔案,期望它的大小可以讀入到記憶體中去,在記憶體中去重。這一步就有很多演算法了,都放到乙個hashset裡可能是最省力的。

關於n的大小可以自己調整,目標是要讓小檔案能讀入到記憶體。比如處理1T的檔案,就可以取n=1000,使得每個小檔案期望只有1G。

正確性:如果兩個字串的hash值不相等,那麼字串也一定不相等。也就是說相同的字串必然會在乙個檔案中。那麼對於每個小檔案單獨去重是沒有問題的,沒有遺漏。

效率:空間上需要多一倍的磁碟,時間是就是磁碟讀寫兩次,記憶體裡的操作也是O(n)。總的來說,時空複雜度都是O(n)

更多的考慮:

如果不幸某乙個小檔案還是很大,不能讀入到記憶體,那麼可以考慮對這個小檔案重複上述演算法,他就會變的更小。

如果原來的檔案非常bias,極限情況比如就是幾個字串一直在重複,那麼就會導致小檔案還是很大,並且重複這個演算法永遠也不可能使他變小了。那麼可以先把檔案分成n份,每份去重,然後再進入到原來的演算法環節。這樣子就可以保證乙個字串最多出現n次了。

4樓:

我最近也在幹這事。

你首先要考慮壓縮後的檔案是否能放在記憶體裡,如果OK,awk一行就搞定了。

否則,上Hadoop。或者找個長假,跑個sort | uniq。

5樓:依雲

去重沒必要排序。你要求保持行之間的順序不?你試試直接讀取行、雜湊之後扔 KV 資料庫找看重不重。

另外不知道你是怎麼拆的,不過瓶頸在 I/O 上你只能上 SSD 了。另外你是不是用的機械硬碟但是給拆成隨機讀了?

如何用python對乙個大的txt檔案進行逐行查重,並將查重過的資料存到乙個新的txt檔案中?

yiridium 就演算法而言,直接按行讀取檔案,然後計算每行的hash值作為key,如果key已經存在並且value不為空,就說明跟之前的重複了 否則,說明是第一次出現,就輸出到新的檔案中,並且將hash值作為key,插入字典中。直到檔案結束。處理大檔案的方法就是直接 with open file...

如何變成乙個大格局的人?

netkiller 格局就是具備高視點,寬視野,深洞察,能夠跨越時間和空間去看事物,同時不受思維定勢的限制。思維定勢又稱 習慣性思維 是指人們按習慣的 比較固定的思路去考慮問題 分析問題,表現為在解決問題過程中作特定方式的加工準備。它阻礙了思維開放性和靈活性,造成思維的僵化和呆板。這使得人們不能靈活...

乙個大鐵塊放地上500斤,乙個2斤重的小錘子,一直錘能挪動大鐵塊子嗎?

李陽 鐵錠移動的條件是 f eeimg 1 對於鐵鎚,撞擊力來自 F為鐵鎚與鐵錠的相互作用力,t為作用時間。當然F不恆定的話 F同時來自鐵鎚和鐵錠的形變,來自鐵的彈性。說的簡單點,假設鐵錠沒有非彈性形變 也就是說沒有砸出坑,彈不回來 當鐵錠和鐵鎚相對靜止時,鐵鎚運動的能量全部變成了鐵形變儲存的能量,...