You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么PySpark加载首个CSV文件耗时远高于后续文件?

首次加载CSV耗时远高于后续任务的原因

以下是导致该现象的核心因素:

  • SparkSession冷启动开销
    首次执行getOrCreate()创建SparkSession时,JVM需要完成一系列初始化工作:启动Spark Driver进程、初始化任务调度器、内存管理器、序列化框架等核心组件,还要加载大量Spark相关的类文件。这些冷启动操作会占用3-4秒中的大部分时间。后续读取文件时,SparkSession已经处于运行状态,无需重复执行这些初始化步骤。

  • Schema推断与元数据缓存
    你没有指定CSV的Schema,Spark首次读取时需要扫描文件内容(默认会读取部分数据)来自动推断每列的数据类型。这个Schema推断过程会增加额外耗时。后续读取同一文件或同结构文件时,Spark会复用缓存的Schema信息,跳过推断步骤。同时,操作系统和Spark也会缓存文件的元数据(如文件大小、存储位置),二次读取时无需重新获取。

  • JVM JIT编译优化
    JVM的即时编译器(JIT)会在代码首次运行时,将频繁执行的热点代码编译为本地机器码。首次读取CSV时,Spark的核心处理逻辑多为解释执行,速度较慢;后续执行时,JIT已经完成热点代码的编译,执行效率会显著提升。

  • 操作系统页缓存
    首次读取文件时,数据从磁盘加载到内存;读取完成后,操作系统会将文件内容缓存到内存页缓存中。你的文件仅24MB,完全能被内存容纳,后续读取时直接从内存缓存获取数据,避免了磁盘IO的耗时。

内容的提问来源于stack exchange,提问作者Vitaliy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 06:31:01