Comment éviter le mélange tout en se joignant DataFrames sur les clés uniques?

J'ai deux DataFrames A et B:

  • A a des colonnes (id, info1, info2) avec environ 200 Millions de lignes de
  • B seulement la colonne id avec 1 million de lignes

La id colonne est unique dans les deux DataFrames.

Je veux un nouveau DataFrame les filtres A pour inclure uniquement les valeurs de B.

si B était très petite, je sais que j'aimerais quelque chose le long des lignes de

A.filter($("id") isin B("id"))

mais B est encore assez grande, donc pas tout de qu'il peut s'adapter à la volée variable.

et je sais que je pourrais utiliser

A.join(B, Seq("id"))

mais qui ne serait pas le harnais de l'unicité et j'ai peur que va entraîner des remaniements.

Quelle est la meilleure méthode pour réaliser cette tâche?

  • Ce qui vous fait penser que "j'ai peur que va causer de mélange"?
  • Je crois que la Spark n'a pas de conserver tous les petits dataframe à tous les nœuds, à l'origine pour shuffle quand les rejoindre. Aussi, si l'étincelle sait de l'unicité, il pourrait arrêter l'envoi de valeurs si l'un a été trouvé. S'il vous plaît corrigez-moi si je me trompe.
  • Semble correct, mais suppose que c'est au cas par cas étant donné que toute l'Étincelle optimisations sont assez nouveaux et les jeunes, et pas nécessairement à des combats.
InformationsquelleAutor DeanLa | 2017-05-07