2017-10-05 6 views
0

J'ai deux jeux de données spark que j'essaie de rejoindre. Les clés de jointure sont imbriquées dans l'ensemble de données A, je dois donc les mettre à plat avant de rejoindre l'ensemble de données B. Le problème est que dès que je flatmap ce champ, le nom de la colonne devient par défaut "_1", "_2", etc. Est-il possible de changer l'alias en quelque sorte?Spark Dataset: comment changer l'alias des colonnes après un flatmap?

A.flatMap(a => a.keys).join(B).where(...)

+0

pouvez-vous copier votre code, ne sais pas pourquoi vous avez besoin d'alias dans flatmap –

Répondre

1

Après avoir appliqué la transformation comme flatMap vous perdez les colonnes comme ce qui est logique, comme après l'application de la transformation comme flatMap ou map il ne garantit pas que le nombre de colonnes ou type de données dans chaque colonne restent les années same.That pourquoi nous perdons le nom de la colonne là-bas.

Ce que vous pouvez faire est que vous pouvez récupérer toutes les colonnes précédente, puis l'appliquer à l'ensemble de données comme celui-ci: -

val columns = A.columns 
A.flatMap(a => a.keys).toDF(columns:_ *).join(B).where(...) 

cela ne fonctionnera que si le nombre de colonnes est le même après l'application flatmap

Hope this efface votre problème

Merci