Конвертировать список [Карта] зажечь датафрейм - PullRequest
0 голосов
/ 23 ноября 2018

Я хочу преобразовать List [Map] в фрейм данных spark, ключи Map - это sname, ключи Map - это столбцы DataFrame

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Если у вас уже есть 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)
   )
 )
0 голосов
/ 23 ноября 2018

Здесь вы можете сделать это так

val map1 = {"a"->1}
val map2 = {"b"->2}
val lst = List(map1,map2)
val lstDF = lst.toDF
lstDF.take(2).foreach(println)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...