AWS上PySpark读写单个Parquet文件的S3请求数咨询
PySpark读写S3单个Parquet文件的S3请求数分析
1. 写入单个Parquet文件的请求数
执行df.write.mode("overwrite").parquet('some_path/')写入单个Parquet数据文件时,涉及的S3请求类型及数量如下(默认Spark配置,目标路径初始为空的情况):
- 前置检查:1次
List请求,用于确认目标路径下是否存在旧文件(overwrite模式会先清理路径) - 文件写入:1次
Put请求,上传Parquet数据文件(如part-00000-xxx.snappy.parquet) - 元数据生成:
- 2次
Put请求,分别写入_metadata和_common_metadata元数据文件(Spark默认生成,用于加速后续读取) - 1次
Put请求,写入_SUCCESS标记文件,标识任务完成
- 2次
- 状态验证:2-3次
Head/List请求,验证所有文件是否成功上传,确认写入状态
总请求数约7-9次(不含删除旧文件的Delete请求,若路径已有文件,需额外增加对应数量的Delete请求)。
2. 读取单个Parquet文件的请求数
执行df=sqlContext.read.parquet('some_path/')读取单个Parquet数据文件时,涉及的S3请求类型及数量如下:
- 路径扫描:1次
List请求,列出目标路径下的所有文件,识别数据文件和元数据文件 - 元数据读取:
- 若存在
_metadata文件:1次Get请求读取该文件,获取Schema及文件元数据 - 若不存在
_metadata文件:1次Get请求读取Parquet数据文件的footer部分,获取Schema信息
- 若存在
- 数据读取:1次
Get请求,全量读取Parquet数据文件的内容 - 文件验证:1-2次
Head请求,验证文件存在性、获取文件大小等基础信息
总请求数约3-5次。
内容的提问来源于stack exchange,提问作者user3476463
相关产品推荐
相关产品推荐

