Я в настоящее время dataframe с идентификатором и столбца, который массив структур:Спарк: взрывать dataframe массив структур и добавить идентификатор
root
|-- id: integer (nullable = true)
|-- lists: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- text: string (nullable = true)
| | |-- amount: double (nullable = true)
Ниже приведен пример таблицы с данными:
id | lists
-----------
1 | [[a, 1.0], [b, 2.0]]
2 | [[c, 3.0]]
Как преобразовать приведенный выше фреймворк данных в нижеследующее? Мне нужно «взорвать» массив и добавить его одновременно.
id | col1 | col2
-----------------
1 | a | 1.0
1 | b | 2.0
2 | c | 3.0
Под редакцией Примечание:
Примечание есть разница между этими двумя примерами ниже. Первый содержит «массив структур элементов». В то время как позднее просто содержит «массив элементов».
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)
Возможный дубликат [Сведение строк в Спарк] (http://stackoverflow.com/questions/32906613/flattening-rows-in-spark) –
Этот вопрос имеет более простой фрейм, где второй столбец - это просто массив. Мина отличается тем, что мой второй столбец является «массивом структур». – Steve