我有一個由100,000+行組成的數據框,每行有100,000列,總計爲10,000,000,000浮點值。是否可以將巨大的數據幀保存到實木複合地板中?
我已經成功在csv
(製表符分隔)文件中讀取他們以前和我他們成功讀取到50個核至強機250GB RAM,並嘗試寫出來作爲.parq
目錄,例如:
huge.csv
中的花車被保存爲字符串,它是125GB。
import dask.dataframe as dd
filename = 'huge.csv'
df = dd.read_csv(filename, delimiter='\t', sample=500000000)
df.to_parquet('huge.parq')
已寫入huge.parq
了近一個星期,該目錄是14GB而且好像節省.to_parquet
不會很快停止任何時間的過程。
而且free -mh
是顯示還是有留下的可用內存,但它採取挽救.parq
目錄的時間是極其緩慢:
$ free -mh
total used free shared buff/cache available
Mem: 251G 98G 52G 10M 101G 152G
Swap: 238G 0B 238G
的問題是:
鑑於大小數據幀和機器是否可以將dask數據幀保存到parquet文件中?
dask
和fastparquet
花費這麼長時間來保存巨大的數據幀是否正常?有什麼方法可以估計保存鑲木地板文件所用的時間嗎?
10e9浮點值對我來說似乎並不重要。 1e5列雖然。你有沒有考慮過使用dask.array和HDF5?這些可能更適合在兩個維度上進行阻止。 – MRocklin
有沒有理由爲什麼dask.array和HDF5對於>>> no的數據框更好。列?什麼是「阻塞」? – alvas
每個分區有多少行? read_csv按字節數分割,所以我期望有一小部分。對於每個分區的每一列,都有一段必須存在的元數據,使得您的元數據比我以前見過的任何元數據都大 - 但我期望它能夠正常工作。對於存儲陣列式的100kx100k浮點數,我實際上推薦[zarr](http://zarr.readthedocs.io/en/latest/)。 – mdurant