Как переименовать поля в 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");

Но это не работает. Как мне этого добиться?

Ответы на вопрос(2)

Ваш ответ на вопрос