Hinzufügen eines neuen Struct-Spalte, um ein DataFrame
Ich bin gerade dabei, extrahieren Sie eine Datenbank von MongoDB und verwenden von Spark für das Einlesen in ElasticSearch mit geo_points
.
Den Mongo-Datenbank hat, werden Längen-und Breitengrad-Werte, aber ElasticSearch verlangt, dass Sie gegossen werden in der geo_point
geben.
Gibt es eine Möglichkeit in der Funke zu kopieren lat
und lon
Spalten zu einer neuen Spalte ist ein array
oder struct
?
Jede Hilfe ist willkommen!
InformationsquelleAutor Kim Ngo | 2015-07-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nehme an, Sie beginnen mit irgendeiner Art von flat-schema so:
Ersten lets-erstellen von Beispiel-Daten:
Eine einfache Möglichkeit ist die Verwendung eines udf-und Fall-Klasse:
und wir bekommen
Ein harter Weg ist, um wandeln Sie Ihre Daten und wenden schema danach:
und erhalten wir die erwartete Ausgabe
Erstellen von verschachtelten schema von Grund auf mühsam sein kann, so wenn Sie kann würde ich empfehlen den ersten Ansatz. Es kann leicht erweitert werden, wenn Sie mehr brauchen ausgefeilte Struktur:
und wir Holen Sie erwartete Ausgabe:
Leider haben Sie keine Kontrolle über
nullable
Feld, so dass wenn ist wichtig für Ihr Projekt müssen Sie angeben schema.Schließlich können Sie
struct
Funktion eingeführt, die in 1.4:Ich sehe keinen Grund, warum Sie es nicht konnte.
Hi @zero323 - wissen Sie, wenn es trotzdem zu nutzen, ist Ihre UDF-Methode erstellen Sie eine struct, wenn es mehr als 10 Spalten in der neuen Struktur? UDFs zu haben scheinen, eine Beschränkung auf 10 input-Variablen.
stackoverflow.com/q/39494620/1560062 helfen?
Hi @zero323. Eigentlich dein letzter Vorschlag von "struct" - Funktion hat mir geholfen. Ich sollte Lesen Sie auf der Unterseite zuerst!
InformationsquelleAutor zero323
Versuchen Sie dies:
InformationsquelleAutor user8817325