Spark SQL: 合并 List[Map] 为单一 Map 的方法
在 Spark SQL 中,可以使用 map_from_arrays 函数将两个数组合并为一个键值对的数组,然后使用 map_from_entries 函数将键值对的数组转换为一个 Map。\n\n假设有如下 List[Map] 的数据:\n\nval data = List(\n Map("key1" -> "value1", "key2" -> "value2"),\n Map("key3" -> "value3", "key4" -> "value4")\n)\n\n\n首先,将 List[Map] 转换为两个数组,一个包含所有的键,一个包含所有的值:\n\nval keys = data.flatMap(_.keys).toArray\nval values = data.flatMap(_.values).toArray\n\n\n然后,使用 map_from_arrays 函数将两个数组合并为一个键值对的数组:\n\nval keyValuePairs = spark.sqlContext.createDataFrame(Seq((keys, values))).toDF("keys", "values")\nval combined = keyValuePairs.selectExpr("map_from_arrays(keys, values) as map")\n\n\n最后,使用 map_from_entries 函数将键值对的数组转换为一个 Map:\n\nval result = combined.selectExpr("map_from_entries(map) as result").collect()(0).getAs[Map[String, String]]("result")\n\n\n现在,result 将包含合并后的 Map。
原文地址: https://www.cveoy.top/t/topic/p8hF 著作权归作者所有。请勿转载和采集!