我有一个 UDF,它使用 Scala 内置 toArray
函数将 Map(在本例中为 String -> String)转换为 Struct 数组
val toArray = udf((vs: Map[String, String]) => vs.toArray)
结构体的字段名称为 _1
和 _2
。
如何更改 UDF 定义,使字段(键)名称为“key”,值名称为“value”作为 UDF 定义的一部分?
[{"_1":"aKey","_2":"aValue"}]
至
[{"key":"aKey","value":"aValue"}]
最佳答案
您可以使用一个类:
case class KV(key:String, value: String)
val toArray = udf((vs: Map[String, String]) => vs.map {
case (k, v) => KV(k, v)
}.toArray )
关于scala - 如何使用自定义键值名称将映射列转换为结构类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44312503/