我有数据帧架构 -
resultDF.printSchema
|-- SKU_ID_MAP: string (nullable = true)
|-- SKU_IMAGE_MAP: map (nullable = true)
| |-- key: string
| |-- value: struct (valueContainsNull = true)
| | |-- image_id: string (nullable = true)
| | |-- image_name: string (nullable = true)
| | |-- image_path: string (nullable = true)
我想从DF上面创建这样的最终数据帧。
case class Devicesku2 (
sku_id : String,
sku_images: Map[String, ImageInfo2]
)
resultDF.map(
row => Devicesku2(
row.getAs[String]("SKU_ID"),
row.getAs[Map]("SKU_IMAGE_MAP")
).toDF
在上面的row.getAs [Map]给出了编译时错误,因为value是struct type。
有人可以为此提供帮助吗? 谢谢,
`
答案 0 :(得分:1)
如果您将case class
的元素重命名为:
case class Devicesku2 (
sku_id_map: String,
sku_image_map: Map[String, ImageInfo2]
)
你可以使用
resultDF.as[Devicesku2]
否则,如Aluan Haddad的评论所述,您需要
row.getAs[Map[String, ImageInfo2]]("SKU_IMAGE_MAP")