J'ai 2 bases de données dans Spark. Les deux ont un identifiant unique. La structure est la suivanteUn moyen efficace de faire une jointure entre les données lorsque le champ de jointure est unique
df1:
id_df1 values
abc abc_map_value
cde cde_map_value
fgh fgh_map_value
df2:
id_df2 array_id_df1
123 [abc, fgh]
456 [cde]
Je veux obtenir le résultat dataframe suivant:
result_df:
id_df2 array_values
123 [map(abc,abc_map_value), map(fgh,fgh_map_value)]
456 [map(cde,cde_map_value)]
Je peux utiliser sql étincelle pour le faire, mais je ne pense pas que ce soit la façon la plus efficace Les identifiants sont uniques.
Existe-t-il un moyen de stocker un dictionnaire clé/valeurs en mémoire pour rechercher la valeur basée sur la clé plutôt que de faire une jointure? Serait-il plus efficace que de faire une jointure?
vous pouvez utiliser [variables de diffusion] (http://stackoverflow.com/questions/40673773/how-to-use-a- broadcast-collection-in-a-udf/40676271 # 40676271) comme tables de recherche si l'un de vos jeux de données n'est pas trop grand. – mtoto