我试图像这样从s3中读取实木复合地板:
import dask.dataframe as dd
s3_path = "s3://my_bucket/my_table"
times = dd.read_parquet(
s3_path,
storage_options={
"client_kwargs": {
"endpoint_url": bucket_endpoint_url,
},
"profile_name": bucket_profile,
},
engine='pyarrow',
)
仅创建一个淡淡的数据框需要很长时间。尚未对此数据帧执行任何计算。我跟踪代码,看起来好像是在pyarrow.parquet.validate_schema()中花费时间
我的实木复合地板桌子上有很多文件(〜2000个文件)。而在我的笔记本电脑上,创建数据帧仅需543秒。并且它正在尝试检查每个实木复合地板文件的架构。有没有办法禁用模式验证?
谢谢
答案 0 :(得分:0)
当前,如果没有元数据文件,并且您正在使用PyArrow后端,则Dask可能正在发送请求以从S3上的每个单独分区读取元数据。这很慢。
现在正在重写Dask的数据框镶木地板阅读器,以帮助解决此问题。在此之前,您可能会考虑使用fastparquet和ignore_divisions关键字(或类似的关键字),或者在一两个月后再检查一次。