I haben derzeit ein Datenrahmen mit einer ID und einer Säule, die ein Array von Strukturen ist:Funken: Explodieren eines Datenrahmens Array von Strukturen und hängen ID
root
|-- id: integer (nullable = true)
|-- lists: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- text: string (nullable = true)
| | |-- amount: double (nullable = true)
Hier ist ein Beispiel-Tabelle mit Daten:
id | lists
-----------
1 | [[a, 1.0], [b, 2.0]]
2 | [[c, 3.0]]
Wie transformiere ich den obigen Datenrahmen in den unteren? Ich muss das Array "explodieren" und gleichzeitig die ID anhängen.
id | col1 | col2
-----------------
1 | a | 1.0
1 | b | 2.0
2 | c | 3.0
Herausgegeben Hinweis:
Hinweis es einen Unterschied unten zwischen den beiden Beispielen ist. Die erste enthält "eine Anordnung von Strukturen von Elementen". Während die später enthält nur "eine Reihe von Elementen".
root
|-- id: integer (nullable = true)
|-- lists: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- text: string (nullable = true)
| | |-- amount: double (nullable = true)
root
|-- a: long (nullable = true)
|-- b: array (nullable = true)
| |-- element: long (containsNull = true)
Mögliche Duplikat [Abflachen Zeilen in Funken] (http://stackoverflow.com/questions/32906613/flattening-rows-in-spark) –
Diese Frage hat einen einfacheren Datenrahmen, wobei die zweite Spalte nur ein Array ist. Meine unterscheidet sich, weil meine zweite Spalte ein "Array von Strukturen" ist. – Steve