У меня есть пакет документов json, который соответствует изменению базы данных .. который похож на этот формат:
{
"key": "abc",
"timestamp": 1573085110000,
"cols": [{
"name": "COL1",
"value": "14",
}, {
"name": "COL2",
"value": "Some Text",
}
]
}
Загрузка этого файла в искровой фрейм приводит к:
+---+-------------+--------------------+
|key| timestamp| cols|
+---+-------------+--------------------+
|abc|1573084821000|[[COL1, 14], [COL...|
|def|1573171513000|[[COL1, xx], [COL...|
| | | |
+---+-------------+--------------------+
Я взорвал массив cols
, так что теперь имена столбцов БД находятся в строках, urgh
+---+----+---------+
|key|name| value|
+---+----+---------+
|abc|COL1| 14|
|abc|COL2|Some Text|
| | | |
+---+----+---------+
Теперь, я понял, вот так .., поэтому я начал писать:
dt.groupBy($"key").pivot("name").agg($"value")
В этот момент, очевидно, я понял, что spark не допускает агрегации на нечисловых столбцах ..
по сути, учитывая раздражающий способ определения данных в json ... есть ли лучший способдобиться этого:
+---+----+---------+
|key|COL1| COL2|
+---+----+---------+
|abc|14 |Some Text|
| | | |
+---+----+---------+
нужно отправиться домой, был долгий день .. вероятно, упустил что-то очевидное, та!