Comment ajouter une nouvelle colonne Struct à un DataFrame
Je suis en train d'essayer d'extraire d'une base de données MongoDB et l'utilisation de l'Étincelle à l'acquérir dans ElasticSearch avec geo_points
.
La base de données Mongo a des valeurs de latitude et longitude, mais ElasticSearch oblige à être intégré dans le geo_point
type.
Est-il un moyen de l'Étincelle à la copie de la lat
et lon
colonnes à la une nouvelle colonne qui est une array
ou struct
?
Toute aide est très appréciée!
source d'informationauteur Kim Ngo
Vous devez vous connecter pour publier un commentaire.
Je suppose que vous commencez avec une sorte de plat de schéma comme ceci:
D'abord, permet de créer les données de l'exemple:
Un moyen facile est d'utiliser un udf et de la classe de cas:
et nous obtenons
Une voie difficile, c'est de transformer vos données et de les appliquer schéma par la suite:
et nous obtenons un résultat attendu
La création de imbriquée schéma à partir de zéro peut être fastidieux si vous le pouvez, je recommanderais de la première approche. Il peut être facilement étendu si vous avez besoin de plus sophistiqué de la structure:
et nous vous prévu de sortie:
Malheureusement, vous n'avez aucun contrôle sur
nullable
terrain, et donc il est important pour votre projet, vous devrez spécifier le schéma.Enfin, vous pouvez utiliser
struct
fonction introduite dans la version 1.4:Essayez ceci: