Wie benenne ich Felder in einem DataFrame um, der verschachteltem JSON entspricht?

Ich versuche, in einer mobilen App empfangene JSON-Ereignisse (wie Klicks usw.) mit @ zu verarbeitespark 1.5.2. Es gibt mehrere App-Versionen und die Struktur der Ereignisse variiert je nach Version.

Say Version 1 hat die folgende Struktur:

{
    "timestamp": "",
    "ev": {
                "app": {
                    "appName": "XYZ",
                    "appVersion": "1.2.0"
                }
                "device": {
                    "deviceId": "ABC",
                    ...
                }
                ...
             }
}

Und eine andere Version hat die folgende Struktur:

{
    "timestamp": "",
    "ev": {
                "_a": {
                    "name": "XYZ",
                    "version": "1.3.0"
                }
                "_d": {
                    "androidId": "ABC",
                    ...
                }
                ...
             }
}

Ich möchte in der Lage sein, einen einzelnen Datenrahmen für die Struktur zu erstellen und einige Abfragen durchzuführen.

Ich erstelle zwei verschiedene Datenrahmen für jede Struktur mit demfilter Funktion. Jetzt muss ich in der Lage sein, die Spalten umzubenennen, um eine Vereinigungsoperation für die beiden Datenrahmen durchzuführen.

Ich benutze

df.withColumnRenamed("ev.app", "ev._a").withColumnRenamed("ev.device", "ev._d");

Aber das funktioniert nicht. Wie erreiche ich das?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage