如何使用自定义键值名称将map列转换为struct类型?

时间:2017-06-01 16:12:53

标签: scala apache-spark apache-spark-sql

我有一个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"}]

1 个答案:

答案 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 )