2016-04-14 21 views
0

Ich möchte ein Array konvertieren erstellt wie:Convert Datenrahmen zu RDD [Karte] in Scala

case class Student(name: String, age: Int) 
val dataFrame: DataFrame = sql.createDataFrame(sql.sparkContext.parallelize(List(Student("Torcuato", 27), Student("Rosalinda", 34)))) 

Wenn ich die Ergebnisse der Datenrahmen zu sammeln, die sich ergebende Array ist ein Array[org.apache.spark.sql.Row] = Array([Torcuato,27], [Rosalinda,34])

Ich bin Blick in die Datenrahmen in einer RDD Umwandlung [Karte] zB:

Map("name" -> nameOFFirst, "age" -> ageOfFirst) 
Map("name" -> nameOFsecond, "age" -> ageOfsecond) 

ich habe versucht, über Karte zu verwenden: x._1 aber das scheint nicht für Array [spark.sql.row] Ho zu arbeiten Kann ich die Transformation trotzdem durchführen?

+0

Die äußere Karte kein Tasten- Wertstruktur hat? – Himaprasoon

+0

Der Kontext ist Ich möchte Spark-Jobserver verwenden, aber einige Probleme in Bezug auf die Serialisierung von Job-Ergebnissen. Anscheinend funktioniert nur eine Zuordnung von String-Schlüssel/Werten. Das zurückgegebene Ergebnis ist eine Zusammenfassung mehrerer Spark-Abfragen. Die äußere Karte würde also weitere Schlüssel enthalten. https://groups.google.com/forum/#!topic/spark-jobserver/V4finry_RoM –

+2

Dies ist eine sehr schlechte Frage, mit irreführenden Titel, schlechte Praxis, niedrige Qualität Beschreibung. Sie müssen an diesen Sachen arbeiten, wenn Sie hier Fragen stellen – eliasah

Antwort

6

Sie können Map-Funktion mit Muster den Job hier

import org.apache.spark.sql.Row 

dataFrame 
    .map { case Row(name, age) => Map("name" -> name, "age" -> age) } 

passend verwenden zu tun Dies führt in RDD[Map[String, Any]]

Verwandte Themen