如何使用自定义键值名称将映射列转换为结构类型?
Posted
技术标签:
【中文标题】如何使用自定义键值名称将映射列转换为结构类型?【英文标题】:How to convert map column to struct type with custom key-value names? 【发布时间】:2017-06-01 16:12:52 【问题描述】:我有一个 UDF,它使用 scala 内置的 toArray
函数将 Map(在本例中为 String -> String)转换为数组
val toArray = udf((vs: Map[String, String]) => vs.toArray)
数组结构的元组键名称为_1
,值名称为_2
。
如何更改 UDF 定义,使键名称为“键”,值名称为“值”作为 UDF 定义的一部分?
["_1":"aKey","_2":"aValue"]
到
["key":"aKey","value":"aValue"]
【问题讨论】:
【参考方案1】:你可以使用一个类:
case class KV(key:String, value: String)
val toArray = udf((vs: Map[String, String]) => vs.map
case (k, v) => KV(k, v)
.toArray )
【讨论】:
嗨@user8098908,地图本身可以为空-这会引发空指针异常吗?也许应该对此进行检查?以上是关于如何使用自定义键值名称将映射列转换为结构类型?的主要内容,如果未能解决你的问题,请参考以下文章