Как переименовать поля в DataFrame, соответствующем вложенному JSON
Я пытаюсь обработать события JSON, полученные в мобильном приложении (например, клики и т. Д.), Используяspark 1.5.2
, Существует несколько версий приложения, и структура событий варьируется в зависимости от версии.
Скажем, версия 1 имеет следующую структуру:
{
"timestamp": "",
"ev": {
"app": {
"appName": "XYZ",
"appVersion": "1.2.0"
}
"device": {
"deviceId": "ABC",
...
}
...
}
}
А другая версия имеет следующую структуру:
{
"timestamp": "",
"ev": {
"_a": {
"name": "XYZ",
"version": "1.3.0"
}
"_d": {
"androidId": "ABC",
...
}
...
}
}
Я хочу иметь возможность создать один кадр данных для структуры и выполнить некоторые запросы.
Я создаю два разных фрейма данных для каждой структуры, используяfilter
функция. Теперь мне нужно иметь возможность переименовывать столбцы для выполнения операции объединения на двух фреймах данных.
Я использую:
df.withColumnRenamed("ev.app", "ev._a").withColumnRenamed("ev.device", "ev._d");
Но это не работает. Как мне этого добиться?