Dask-获取Dask数据帧中每个分区的行长的最快方法

时间:2019-08-13 17:44:27

标签: dask dask-distributed dask-delayed fastparquet

我想获取多个数据帧中每个分区的长度。我现在正在获取每个分区,然后获取每个分区的索引大小。这非常非常慢。有更好的方法吗?

这是我的代码的简化片段:

   temp_dd = dd.read_parquet(read_str, gather_statistics=False)
   temp_dd = dask_client.scatter(temp_dd, broadcast=True)
   dask_wait([temp_dd])
   temp_dd = dask_client.gather(temp_dd)

   while row_batch <= max_row:
       row_batch_dd = temp_dd.get_partition(row_batch)
       row_batch_dd = row_batch_dd.dropna()    
       row_batch_dd_len = row_batch_dd.index.size  # <-- this is the current way I'm determining the length
       row_batch = row_batch + 1

我注意到,在读取实木复合地板时,我不能简单地使用实木复合地板信息(这是非常快的),因为读取后,我会进行逐分区处理,然后删除NaN。这是我想要的每个分区的后处理长度。

1 个答案:

答案 0 :(得分:1)

df = dd.read_parquet(fn, gather_statistics=False)
df = df.dropna()
df.map_partitions(len).compute()