0
votes

Spark - Carte Plat Dataframe à un schéma JSON imbriqué configurable

J'ai un areframe plat avec 5-6 colonnes. Je veux les nichier et le convertir en un fichier de données imbriqué afin que je puisse alors l'écrire au format de parquet.

Cependant, je ne veux pas utiliser de classes de cas car j'essaie de garder le code aussi configurable que possible. Je suis coincé avec cette partie et j'ai besoin d'aide.

mon entrée: xxx

ma sortie:

rangée 1: xxx

J'ai essayé d'utiliser la fonction "Carte" dans l'ALL Spark Dataframe où je mappe mes valeurs à une classe de cas. Cependant, je jouerai avec le nom des champs et je pourrais aussi les changer.

Je ne veux pas maintenir une classe de cas et cartographier les lignes vers les noms de colonne SQL car cela impliquerait des changements de code à chaque fois.

Je pensais à maintenir un hashmap avec les noms de colonne que je Voulez-vous garder avec les noms de colonne du DataFrame. Par exemple, dans l'exemple, je mappe "Compte (Apple)" à "Compte of Apple". Cependant, je ne peux pas penser à un bon moyen facile de passer mon schéma comme une configuration puis de la cartographier dans mon code


0 commentaires

3 Réponses :


0
votes

:: (double côlon) à Scala est traité comme "inconvénient" dans les listes Scala. Ceci est la façon de créer une liste de scala ou d'insérer un élément à une liste mutable existante.

scala> val anotherList = 23 :: 34
<console>:12: error: value :: is not a member of Int
       val anotherList = 23 :: 34


0 commentaires

2
votes

Voici une approche à l'aide de la carte Scala Carte Pour créer des mappages de colonne à l'aide du jeu de données suivant: xxx

Nous déclarons d'abord les mappages en utilisant Scala. collection.mmauttable.map la collection et la fonction qui est responsable du mappage: xxx

La fonction iTère si les colonnes de l'afraframe donné et identifient les colonnes qui avoir des touches communes avec le mappage . Ensuite, il renvoie la colonne qui change son nom (avec alias) en fonction des mappages appliqués.

sortie de MapColumns (collappage, df) .Show (false) : xxx

Enfin, nous générons des fruits et des légumes via struct type: xxx

Notez que nous déposons tous les cols de la collection de colléappage après avoir terminé avec les transformations.

sortie: xxx


3 commentaires

Bonjour, cette fois j'ai ajouté la fonctionnalité de cartographie qui manquait


Merci, je pensais un moyen de le faire en l'installant dans mon cas d'utilisation!


Bon alors je suis heureux



0
votes
{"ID":"2","ID-2":"23","fruits":[{"Count(apple)":"0","Count(banana)":"1"}],"vegetables":[{"Count(potato)":"0","Count(Onion)":"1"}]}

0 commentaires