我有幾個文件以一列,其被稱爲idx
,我想用它作爲指標。獲得的數據幀大約有13M行。我知道我可以閱讀並以這種方式分配指標(這是慢〜40秒)DASK dataframes known_divisions和性能
df = dd.read_parquet("file-*.parq")
df = df.set_index("idx")
或在此的其他方式(這是快速〜40毫秒)
df = dd.read_parquet("file-*.parq", index = "idx")
通過簡單的操作因爲用第二種方法計算的長度快了4倍。我不明白的是
- 在第一種情況下
df.known_divisions
回報True
,而第二個是False
。我預料到了相反的行爲。然後,我在df
之上做了幾次操作,沒有知名度我總是獲得更好的性能。我在摸索着想弄清楚這是否有意或無意。 - 分區的數量是文件的數量。我如何設置不同數量的分區?
UPDATE 它不只是計算len
這是更快。在我的計算,我創建使用GROUPBY,申請和參加了幾次4個新dataframes而這些都是定時
| |Load and reindex (s)|Load with index (s)|
|:-----------------|-------------------:|------------------:|
| load | 12.5000 | 0.0124 |
| grp, apply, join | 11.4000 | 6.2700 |
| compute() | 146.0000 | 125.0000 |
| TOTAL | 169.9000 | 131.2820 |
要將更新:這將取決於究竟你GROUPBY等等,都是,無論你在一個單一的計算做一些計算(分期償還洗牌時間成本),什麼洗牌的存儲成本。通常,如果有足夠的RAM可用,人們可以選擇在set_index之後保留。 – mdurant
我會檢查堅持並提出一個更具體的性能問題。 – user32185