Ausgabe
Angenommen, ich habe eine Fallklasse wie folgt:
final case class Person(name: String, age: Int)
Ich möchte einen einspaltigen Datenrahmen erstellen, der einen komplexen StructType von Person
. Ich möchte, dass Spark das Schema ableitet.
val data = Seq(Person("Tom", 30), Person("Anna", 35))
val df = spark.createDataFrame(data)
Ich möchte, dass Spark schlussfolgert, dass der Datenrahmen eine einzelne Spalte mit dem komplexen Typ Person
. Derzeit ist es Person
in mehrere Spalten aufgeteilt
Lösung
Sie können die Daten der gewünschten Struktur zuordnen.
Eine Hilfsklasse:
case class PersonWrapper(person: Person)
Jetzt gibt es zwei Möglichkeiten:
- Zuordnen der Scala-Sequenz vor dem Erstellen des Spark-Datenrahmens:
val df = spark.createDataFrame(data.map( PersonWrapper(_)))
oder
- Zuordnen des Spark-Datenrahmens/Datensatzes:
val df = spark.createDataset(data).map(PersonWrapper(_))
Beantwortet von – werner
Antwort geprüft von – Timothy Miller (FixError Admin)