Spark 配置优化:如何将每个文件上传时间提升一倍
在我们最近的 Spark 作业优化中,对于文件处理管道(处理数千个 S3 文件的解密和上传),我们取得了显著进展:每个文件的平均上传时间提升了一倍(即速度翻倍)。这一优化来自于针对 S3A IO 瓶颈的配置调整。我想分享这些细节,以便我们在其他项目中应用这些经验。我将涵盖问题、关键变更、为什么有效以及下一步计划。
核心流程代码逻辑
# =================================================================================
# 1. 配置加载与初始化
# =================================================================================
config = get_config() # 加载 jobs.yaml + common.yaml
CONFIG = clean_config_for_udf(config) # 序列化安全:仅保留基本类型
logger = setup_logging()# 关键配置(已优化)
spark.conf.set("spark.sql.files.openCostInBytes", "32m")
spark.conf.set("spark.hadoop.fs.s3a.multipart.size", "128M")
spark.conf.set("spark.hadoop.fs.s3a.fast.upload.active.blocks", "16")
spark.conf.set("spark.hadoop.fs.s3a.connect