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

如何让Spark从Dataset[String]加载CSV时不丢失最后一行?

问题:Spark从Dataset[String]加载CSV时计数异常,与文件加载行为不一致

我们有如下CSV内容:

RWA
Country of exposure
Credit risk asset class
Projection period
Scenario
RWA

其中第一行RWA是表头,最后一行的RWA是数据内容,并非表头。

从Dataset[String]加载的异常表现

使用以下代码从Dataset[String]加载该CSV时:

import spark.implicits._
val source: Array[String] = (
      "RWA\n" +
      "Country of exposure\n" +
      "Credit risk asset class\n" +
      "Projection period\n" +
      "Scenario\n" +
      "RWA"
      ).split("\n")
val csvData: Dataset[String] = spark.sparkContext.parallelize(source).toDS()
val df = spark.read
  .format("com.databricks.spark.csv")
  .option("header", value = true).csv(csvData)
// df.count() == 4 不符合预期

预期df.count()结果为5,但实际得到4。

从文件加载的正常表现

若将相同CSV内容写入文件后加载,则结果符合预期:

val tempFile = Files.createTempFile("tmp", ".csv")
val res = "RWA\n" +
      "Country of exposure\n" +
      "Credit risk asset class\n" +
      "Projection period\n" +
      "Scenario\n" +
      "RWA"
Files.writeString(tempFile, res)
val df = spark.read
  .format("com.databricks.spark.csv")
  .option("header", value = true)
  .csv(tempFile.toString)
// df.count() == 5 符合预期

是否有办法让Spark从Dataset加载CSV时的表现与从文件加载一致?

环境信息:

  • Scala版本:2.12.14
  • Spark版本:3.0.3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:32:50