我想将List [Map]转换为spark数据框, Map是名称,Map的键是DataFrame的列
答案 0 :(得分:0)
在这里您可以这样做
val map1 = {"a"->1}
val map2 = {"b"->2}
val lst = List(map1,map2)
val lstDF = lst.toDF
lstDF.take(2).foreach(println)
答案 1 :(得分:0)
如果您已经具有 res ,它是列表[Map [String,String]] :
res: List[Map[String,String]] = List(Map(A -> a1, B -> b1, C -> c1), Map(A -> a2, B -> b2, C -> c2))
您可以执行以下操作来创建数据框:
//create your rows
val rows = res.map(m => Row(m.values.toSeq:_*))
//create the schema from the header
val header = res.head.keys.toList
val schema = StructType(header.map(fieldName => StructField(fieldName, StringType, true)))
//create your rdd
val rdd = sc.parallelize(rows)
//create your dataframe using
val df = spark.createDataFrame(rdd, schema)
您可以使用 df.show()输出结果:
+---+---+---+
| A| B| C|
+---+---+---+
| a1| b1| c1|
| a2| b2| c2|
+---+---+---+
请注意,您还可以通过以下方式创建架构:
val schema = StructType(
List(
StructField("A", StringType, true),
StructField("B", StringType, true),
StructField("C", StringType, true)
)
)