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

Apache Spark拼接嵌套JSON字段提示struct类型错误如何解决?

问题根因
  • 你提供的Schema中forename和surname是DataFrame的顶级字段,并非嵌套在name结构体下的子字段。代码中使用col("name.forename")会让Spark尝试查找名为name的struct类型字段并提取子属性,和实际数据结构不匹配。
  • 报错need struct type but got string是因为你最终要把拼接结果存入name字段,即便原有DataFrame存在name字段,也是字符串类型,不可能用.操作符从字符串中提取子属性。
修复后代码
df = (df
       .withColumn("ingestion_date", current_timestamp())
       .withColumn("name", concat(col("forename"), 
             lit(" "), col("surname"))))
     )
补充说明

如果你实际处理的是嵌套JSON,forename确实存放在name结构体下,需要确认Schema符合以下结构才能使用name.forename的写法:

root  
|-- driverRef: string (nullable = true)  
|-- number: integer (nullable = true)  
|-- code: string (nullable = true)  
|-- name: struct (nullable = true)
|    |-- forename: string (nullable = true)  
|    |-- surname: string (nullable = true)  
|-- dob: date (nullable = true)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:36:04