不可重现,但有人可以填写为什么 .head() 调用在索引后会大大减慢吗?
import dask.dataframe as dd
df = dd.read_parquet("Filepath")
df.head() # takes 10 seconds
df = df.set_index('id')
df.head() # takes 10 minutes +
Run Code Online (Sandbox Code Playgroud)
如文档中所述,set_index根据新索引对数据进行排序,以便沿该索引的划分将数据拆分为其逻辑分区。排序需要额外的时间,但执行后会使对该索引的操作速度更快。head()原始文件上将从光盘上的第一个数据块获取,而不考虑任何顺序。
您可以使用关键字index=to read_parquet(也许数据本身已经排序了?)或使用来设置索引,而无需这种排序.map_partitions(lambda df: df.set_index(..)),但这提出了一个明显的问题,您为什么要烦恼,您想要实现什么目标?如果数据已经排序,那么您也可以使用set_index(.., sorted=True),甚至可能使用divisions关键字,如果您碰巧有信息 - 这不需要排序,并且相应地更快。
| 归档时间: |
|
| 查看次数: |
1916 次 |
| 最近记录: |