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

新手求助:在Scala中加载10万行CSV文件至DataFrame

加载10万行CSV到Scala DataFrame 新手指南

第一步:配置项目依赖(SBT)

如果是用IntelliJ创建的Scala SBT项目,打开build.sbt文件,添加适配你Scala版本的Spark SQL依赖(示例用Scala 2.12对应Spark 3.3.x):

name := "CsvToDataFrame"
version := "0.1"
scalaVersion := "2.12.15"

libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-sql" % "3.3.2" % Provided
)

注:Provided表示打包时不包含该依赖,避免和运行环境的Spark冲突;本地调试时可以暂时去掉,但建议保留。

第二步:编写核心加载代码

创建一个Scala对象(比如CsvLoader.scala),写入以下代码:

import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.types.{StringType, IntegerType, StructField, StructType}

object CsvLoader {
  def main(args: Array[String]): Unit = {
    // 初始化SparkSession(Spark应用的入口)
    val spark = SparkSession.builder()
      .appName("LoadLargeCsv")
      .master("local[*]") // 本地运行,自动使用所有可用CPU核心
      .getOrCreate()

    // 方法1:自动推断Schema(适合快速验证,10万行完全够用)
    val dfAuto = spark.read
      .option("header", "true") // 告知Spark第一行是表头
      .option("inferSchema", "true") // 自动识别列的数据类型
      .csv("/your/csv/file/path.csv") // 替换成你的CSV文件实际路径

    // 方法2:手动指定Schema(生产环境更高效,避免推断耗时)
    val customSchema = StructType(Array(
      StructField("col1", StringType, nullable = true),
      StructField("col2", IntegerType, nullable = true),
      StructField("col3", StringType, nullable = true),
      StructField("col4", IntegerType, nullable = true),
      StructField("col5", StringType, nullable = true)
    )) // 根据你的实际列类型修改字段名和类型

    val dfManual = spark.read
      .option("header", "true")
      .schema(customSchema) // 使用手动定义的Schema
      .csv("/your/csv/file/path.csv")

    // 验证数据是否加载成功
    println(s"总数据行数:${dfAuto.count()}")
    dfAuto.show(5) // 打印前5行数据

    // 关闭SparkSession
    spark.stop()
  }
}

第三步:运行注意事项

  1. 在IntelliJ里右键点击CsvLoader对象,选择"Run 'CsvLoader'"即可启动程序。
  2. 如果弹出内存不足提示,打开Run Configuration,在VM options里添加-Xmx4g(分配4G内存,可根据你的电脑配置调整)。
  3. CSV路径可以用绝对路径(比如C:/data/your_file.csv或/home/user/data/your_file.csv),也可以把文件放在项目resources目录下,用相对路径src/main/resources/your_file.csv。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 11:45:29