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

Spark如何创建包含Person结构体的单列复杂类型DataFrame

解决方案

要让Spark将Person作为单列的结构体类型而非拆分成多列,你需要把每个Person实例包装成一个容器(元组或自定义样例类),让Spark识别这是一个单独的字段:

方法1:用元组包裹

直接把每个Person放到单元素元组里,之后重命名列名:

val data = Seq((Person("Tom", 30)), (Person("Anna", 35)))
val df = spark.createDataFrame(data).toDF("person")

方法2:用包装类包裹

定义一个包含Person类型字段的样例类,用这个类来构建数据序列:

final case class PersonWrapper(person: Person)
val data = Seq(PersonWrapper(Person("Tom", 30)), PersonWrapper(Person("Anna", 35)))
val df = spark.createDataFrame(data)

两种方法最终生成的DataFrame都会有一个名为person的列,其类型是包含name和age字段的结构体,你可以通过df.printSchema()验证结果:

root
 |-- person: struct (nullable = true)
 |    |-- name: string (nullable = true)
 |    |-- age: integer (nullable = false)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 18:15:37