Comment effectuer des jointures de base de deux tables RDD dans Spark en utilisant Python?
Comment voulez-vous, la base se joint à Étincelle à l'aide de python? Dans R, vous pourriez utiliser merg() pour ce faire. Quelle est la syntaxe à l'aide de python sur la spark pour:
- Inner Join
- Jointure Externe Gauche
- Jointure Croisée
Avec deux tables (RDD) avec une seule colonne dans chaque qui a une clé commune.
RDD(1):(key,U)
RDD(2):(key,V)
Je pense qu'une jointure interne est quelque chose comme ceci:
rdd1.join(rdd2).map(case (key, u, v) => (key, ls ++ rs));
Est ce que le droit? J'ai cherché sur internet et ne pouvez pas trouver un bon exemple de jointures. Merci à l'avance.
source d'informationauteur invoketheshell
Vous devez vous connecter pour publier un commentaire.
Il peut être fait soit en utilisant
PairRDDFunctions
d'Étincelle ou de Trames de Données. Depuis trame de données des opérations de bénéficier de Catalyseur De L'Optimiseur la deuxième option est utile d'examiner.En supposant que vos données se présente comme suit:
Avec PairRDDs:
Inner join:
Jointure externe gauche:
Produit cartésien (ne nécessite pas de
RDD[(T, U)]
):Diffusion de jointure (ne nécessite pas de
RDD[(T, U)]
):Enfin, il y a
cogroup
qui n'a pas de SQL directe équivalent, mais peut être utile dans certaines situations:Avec Spark Trames De Données
Vous pouvez utiliser SQL DSL ou d'exécuter du SQL brut à l'aide
sqlContext.sql
.Inner join:
Jointure externe gauche:
Cross join (explicite de jointure croisée ou les changements de configuration sont nécessaires dans Spark. 2.0 - spark.sql.crossJoin.activé pour Spark 2.x):
Depuis de 1,6 (1,5 en Scala) pour chacun de ces peut être combiné avec
broadcast
fonction:pour effectuer la diffusion de jointure. Voir aussi Pourquoi mon BroadcastHashJoin est plus lent que ShuffledHashJoin Spark