我有一个UDF,它使用scala内置toArray
函数将一个Map(在本例中为String - > String)转换为一个数组
val toArray = udf((vs: Map[String, String]) => vs.toArray)
数组结构的元组键名称为_1
,值名称为_2
。
如何更改UDF定义,使键名为" key"和价值名称"价值"作为UDF定义的一部分?
[{"_1":"aKey","_2":"aValue"}]
到
[{"key":"aKey","value":"aValue"}]
答案 0 :(得分:5)
您可以使用课程:
case class KV(key:String, value: String)
val toArray = udf((vs: Map[String, String]) => vs.map {
case (k, v) => KV(k, v)
}.toArray )