我們有大數據集 - 幾十個csv文件,大約130Gb。 我們必須在csv表上模擬sql查詢。去。處理大量的csv文件
當我們在測試1.1讀取測試表時使用encoding/csv
Gb文件 - 程序分配526 Gb的虛擬內存。爲什麼? csv.Reader
像發電機一樣工作,當我們使用reader.Read()
方法時,或者它將行保存在內存中?
Full codecodereview之後。
UPD
閱讀文件,如:
rf, err := os.Open(input_file)
if err != nil {
log.Fatal("Error: %s", err)
}
r := csv.NewReader(rf)
for {
record, err := r.Read()
}
落上線record, err := r.Read()
與內存錯誤。在讀取過程中的內存
UPD2 快照:
2731.44MB 94.63% 94.63% 2731.44MB 94.63% encoding/csv.(*Reader).parseRecord
151MB 5.23% 99.86% 2885.96MB 100% main.main
0 0% 99.86% 2731.44MB 94.63% encoding/csv.(*Reader).Read
0 0% 99.86% 2886.49MB 100% runtime.goexit
0 0% 99.86% 2886.49MB 100% runtime.main
SO不是代碼評論網站。使用相關代碼片段以及樣本輸入數據更新您的問題。 – eduncan911
@ eduncan911,附帶相關代碼問題。 –
檢查你的數據的換行符和CR字符代碼,併發布這些字符的地方的一些示例數據。 – eduncan911