2016-12-05 48 views
1

所以我得到了我想要放入bcolz的這個大的tick數據文件(一天60GB未壓縮)。我計劃通過塊讀取這個文件塊並將它們追加到bcolz中。將大於內存的數據寫入bcolz

據我所知,bcolz只支持追加列而不是行。但是,我會說,tick數據比列式更行。例如:

0 ACTX.IV   0 13.6316 2016-09-26 03:45:00.846  ARCA  66 
1 ACWF.IV   0 23.9702 2016-09-26 03:45:00.846  ARCA  66 
2 ACWV.IV   0 76.4004 2016-09-26 03:45:00.846  ARCA  66 
3 ALTY.IV   0 15.5851 2016-09-26 03:45:00.846  ARCA  66 
4 AMLP.IV   0 12.5845 2016-09-26 03:45:00.846  ARCA  66 
  1. 有沒有人對如何做到這一點有什麼建議?
  2. 當使用bcolz時,有沒有關於壓縮級別的建議,我應該選擇。我更關心後面的查詢速度而不是大小。 (我問這個,因爲如下所示,似乎一級壓縮bcolz ctable實際上比未壓縮的查詢速度更好,所以我的猜測是查詢速度不是具有壓縮級別的單調函數)。參考:http://nbviewer.jupyter.org/github/Blosc/movielens-bench/blob/master/querying-ep14.ipynb

在此先感謝! query speed for bcolz

回答

0
  1. 你可以這樣做:

    import blaze as bz 
    ds = bz.data('my_file.csv') 
    for chunk in bz.odo(ds, bz.chunks(pd.DataFrame), chunksize=1000000): 
        bcolz.ctable.fromdataframe(chunk, rootdir=dir_path_for_chunk, 
               mode='w', 
               cparams=your_compression_params) 
    

    ,比使用bcolz.walk遍歷塊。

  2. 默認(blosc級別5)在大多數情況下都適用。如果您想要獲得每一點性能,就必須從實際數據創建樣本文件,大小約爲1-2 GB,並使用不同的壓縮參數測試性能。
相關問題