Kur*_*ile 2 scala apache-spark apache-spark-sql
我有一个UDF使用scala内置toArray函数将Map(在这种情况下为String-> String)转换为Array
val toArray = udf((vs: Map[String, String]) => vs.toArray)
Run Code Online (Sandbox Code Playgroud)
但是,数组结构的元组键名称为_1,值名称为_2。
如何更改UDF定义,使键名是“ key”,值名是“ value”,作为UDF定义的一部分?
[{"_1":"aKey","_2":"aValue"}]
Run Code Online (Sandbox Code Playgroud)
至
[{"key":"aKey","value":"aValue"}]
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以使用一个类:
case class KV(key:String, value: String)
val toArray = udf((vs: Map[String, String]) => vs.map {
case (k, v) => KV(k, v)
}.toArray )
Run Code Online (Sandbox Code Playgroud)