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

Spark Scala JSON转CSV时team_names列解析失败问题求助

解决Spark Scala处理NBA JSON数据时的team_names列解析错误

问题根源

错误提示无法解析名为team_names的列,是因为你爬取的JSON数据顶层只有data和meta两个字段,team_names并不是顶层列——它嵌套在data数组的每个比赛记录里(比如home_team.full_name、visitor_team.full_name这类嵌套结构),直接访问会找不到。

示例JSON结构参考

你爬取的JSON应该是类似这种层级结构:

{
  "data": [
    {
      "id": 123,
      "date": "2024-05-20",
      "home_team": {"id": 1, "full_name": "Boston Celtics"},
      "visitor_team": {"id": 2, "full_name": "Dallas Mavericks"},
      "home_team_score": 109,
      "visitor_team_score": 81
    }
  ],
  "meta": {"total_pages": 1, "current_page": 1}
}

修正后的Scala代码

核心步骤是先展开data数组,再提取嵌套的球队名称字段:

import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions.{explode, col, concat_ws}

object NBADataConverter {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder()
      .appName("NBA JSON to CSV")
      .master("local[*]") // 生产环境请移除该行
      .getOrCreate()

    // 读取原始JSON文件
    val rawDataDF = spark.read.json("/path/to/your/nba_data.json")

    // 展开data数组,将每个比赛记录拆分为单独行
    val gameRecordsDF = rawDataDF.select(explode(col("data")).alias("game_info"))

    // 提取需要的字段,包括你要的team_names(合并主客队名称)
    val finalDF = gameRecordsDF.select(
      col("game_info.date").alias("game_date"),
      concat_ws(" vs ", col("game_info.home_team.full_name"), col("game_info.visitor_team.full_name")).alias("team_names"),
      col("game_info.home_team_score").alias("home_score"),
      col("game_info.visitor_team_score").alias("visitor_score")
      // 按需添加其他统计字段,比如篮板、助攻等
    )

    // 保存为带表头的CSV
    finalDF.write
      .option("header", "true")
      .mode("overwrite") // 若目标路径已存在则覆盖
      .csv("/path/to/output/nba_games.csv")

    spark.stop()
  }
}

关键说明

  1. explode函数的作用:把顶层的data数组拆分成单行的比赛记录,这样才能访问每个记录里的嵌套字段。
  2. 嵌套字段访问:用.逐层访问嵌套结构,比如game_info.home_team.full_name就是从比赛记录里取出主队全名。
  3. 生成team_names:用concat_ws函数把主客队名称拼接成你需要的team_names字段,分隔符可以自定义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 06:37:07