我想转换一个数组(String,String,String)到地图(字符串,Map [String, String]].
的例子:输入>
val inputArray: Array[(String,String,String)] = Array(("elem1","elem2","elem3"),("elem4","elem5","elem6"))
期望输出值
val outputMap: Map[String, Map[String, String]] = Map(
("elem1", Map("elem2" -> "elem3")),
("elem4", Map("elem5" -> "elem6"))
)
首先,在这种情况下,Map("elem2" -> "elem3")
不是一个好的选择,就我所能推断的而言,元组会更好(如果它只保留键值,就像你的问题一样)。无论如何,您需要遍历数组,并更新类型为Map[String, Map[String, String]]
的状态,就像这样:
inputArray.foldLeft(Map.empty[String, Map[String, String]]) {
case (updatingMap, (elem, key, value)) =>
updatingMap.updated(elem, Map(key -> value))
}
同样,这个问题现在不是关于spark的,除非你明确地声明它与spark有关,或者你可能想在数据框架上使用spark api来解决你的问题。