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

Scala中如何读取含点号(.)的JSON列?

处理带点号的JSON列读取问题

当JSON列名包含点号(如abc.id)时,Spark会默认将点号解析为嵌套结构的层级分隔符,直接用原代码会导致无法正确识别列名,以下是修正后的实现:

修正后的代码

val data = """{
"abc.id": [{
    "id": "123",
    "name": "UNKNOWN"
}]}"""

val inputdata = spark.sparkContext.parallelize(data :: Nil)
val inputDF = spark.read.json(inputdata)
inputDF.show()

// 用反引号包裹带点号的列名,避免被解析为嵌套结构
inputDF.select(inputDF.columns.map(c => col(s"`$c`")(0).as(c)): _*).show()

关键说明

  • 用反引号()包裹列名(如`` abc.id` ``),明确告知Spark这是一个完整的列名,而非嵌套字段路径。
  • 原代码中col(c)会把abc.id错误解析为abc结构体下的id字段,反引号是解决这类特殊字符列名的核心手段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 11:20:54