我有几个文件以一列,其被称为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