python - Dask parquet reading 比 Pandas 慢得多
问题描述
在玩 Dask 时,我注意到在 Dask 中读取镶木地板的速度比使用 Pandas 慢得多。下面是 Dask 和 Pandas parquet 读取和计算所有 parquet 中的行数的示例。在这个任务中,有 20 个 parquets 需要读取,它们被 gzip 压缩,大小约为 100MB。在这个设置中,Dask 比多处理的 Pandas 慢 1.78 倍。
t_path
是 parquet 文件路径的列表
from multiprocessing import Pool
import dask
import dask.dataframe as dd
df = dd.read_parquet(t_path,engine="pyarrow",columns=cols)
with dask.config.set(pool=Pool(processes=8)):
df.shape[0].compute()
基于 Dask 的代码在 26.2 秒内运行
import pandas as pd
from multiprocessing import Pool
def parquet_shape(p,cols):
df = pd.read_parquet(p,columns=cols,engine="pyarrow")
return df.shape
with Pool(processes=8) as pool:
res = pool.starmap(parquet_shape,list(map(lambda x: (x,cols),t_path)))
pd.DataFrame(res)[0].sum()
以上基于 Pandas 的代码运行时间为 14.7 秒
我正在寻找有关为什么会出现这种情况的信息?
解决方案
推荐阅读
- react-native - FlatList Navigate to New Screen on press item React Native
- c# - 我需要帮助在带有 id 和文本的文本框中自动完成
- jquery - 如何根据 PrimeFaces 中的状态值(通过/失败)着色?
- regex - How to insert a substring before the first match in regular expressions in Golang?
- android - 如何编写nodejs代码来处理android和nodejs客户端?
- swift - 如何修复“Swift 协议/委托设置 UIImages - 致命错误:在隐式展开可选值时意外发现 nil”?
- node.js - 如何为不使用 Express 中间件的 node.js 应用程序配置 AWS X-Ray?
- python - 使用 Win 10 系统使用设备管理器和 Py 脚本访问所有连接的设备
- swift - 在 SwiftUI ScrollView 中停止垂直滚动
- javascript - 如何使用动态输入字段的值进行计算?