Я хочу написать вложенную структуру данных, которая преобразует кадр данных, состоящий из вложенных карт и простых значений, в одну строку данных, заключенную в массив.
Результат должен преобразовать этот кадр данных:
+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|value |records |
+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|123 |[USA -> [1475600496 -> 25.000000000000000000], ITA -> [1475600500 -> 18.000000000000000000, 1475600516 -> 19.000000000000000000], JPN -> [1475600508 -> 27.000000000000000000]]|
|256 |[USA -> [1475600508 -> 40.000000000000000000, 1475600500 -> 47.000000000000000000], NOR -> [1475600496 -> 30.000000000000000000]] |
|118 |[USA -> [1475600500 -> 50.000000000000000000]] |
+-------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
into:
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|valueAndRecords |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|[[123, [USA -> [1475600496 -> 25.000000000000000000], ITA -> [1475600500 -> 18.000000000000000000, 1475600516 -> 19.000000000000000000], JPN -> [1475600508 -> 27.000000000000000000]], [256, [USA -> [1475600508 -> 40.000000000000000000, 1475600500 -> 47.000000000000000000], NOR -> [1475600496 -> 30.000000000000000000]]], [118, [USA -> [1475600500 -> 50.000000000000000000]]]]|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Я могу объединить оба столбца в одну структуру со строкой ниже, но она не оборачивает результаты в массив. Как это можно сделать?
df.withColumn("valueAndRecords", struct("value", "records")).select("valueAndRecords")