簡體   English   中英

如何在Spark Scala數據幀中將map(key,struct)轉換為map(key,caseclass)

[英]How to convert map(key,struct) to map(key,caseclass) in spark scala dataframe

我有數據框架構-

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]給出編譯時錯誤,因為值是結構類型。

有人可以幫忙嗎? 謝謝,

`

如果將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")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM