Dans Apache Spark, Trame de données les jointures sont des opérations qui vous permettent de combiner deux Cadres de données basé sur une colonne ou un ensemble de colonnes commun. Les opérations de jointure sont fondamentales pour l’analyse et la manipulation des données, en particulier lorsqu’il s’agit d’ensembles de données distribués et à grande échelle. Spark fournit un riche ensemble d’API pour effectuer divers types de Trame de données rejoint.
Importez les bibliothèques nécessaires :
import org.apache.spark.sql.{SparkSession, DataFrame} import org.apache.spark.sql.functions._
Exemple:
Considérons deux DataFrames, employés et départementsqui contiennent des informations sur les employés et leurs services respectifs :
import org.apache.spark.sql.{SparkSession, DataFrame} // Creating a Spark Session val spark = SparkSession.builder.appName("SparkSQLJoinsExample").getOrCreate() // Sample data for employees val employeesData = Seq( (1, "John", 100), (2, "Jack", 200), (3, "Ram", 100), (4, "Smith", 300) ) // Sample data for departments val departmentsData = Seq( (100, "HR"), (200, "Engineering"), (300, "Finance") ) // Defining schema for employees val employeesSchema = List("emp_id", "emp_name", "dept_id") val employeesDF: DataFrame = spark.createDataFrame(employeesData).toDF(employeesSchema: _*) // Defining schema for departments val departmentsSchema = List("dept_id", "dept_name") val departmentsDF: DataFrame = spark.createDataFrame(departmentsData).toDF(departmentsSchema: _*)
Voici les types courants de jointures DataFrame dans Spark :
-
Jointure interne:
- Combine les lignes des deux DataFrames où les valeurs des colonnes spécifiées correspondent.
- Le DataFrame résultant contient uniquement les lignes qui ont des valeurs correspondantes dans les deux DataFrames.
Syntaxe:
val resultDF = df1.join(df2, « commonColumn »)
Exemple:
-
Jointure externe gauche:
- Renvoie toutes les lignes du DataFrame de gauche et les lignes correspondantes du DataFrame de droite.
- S’il n’y a aucune correspondance dans le bon DataFrame, les valeurs nulles sont incluses dans le résultat.
Syntaxe:
val resultDF = df1.join(df2, « commonColumn », « left_outer »)
Exemple:
-
Jointure externe droite :
- Renvoie toutes les lignes du DataFrame droit et les lignes correspondantes du DataFrame gauche.
- S’il n’y a aucune correspondance dans le DataFrame de gauche, les valeurs nulles sont incluses dans le résultat.
Syntaxe:
val resultDF = df1.join(df2, « commonColumn », « right_outer »)
Exemple:
-
Jointure externe complète :
- Renvoie toutes les lignes s’il existe une correspondance dans le DataFrame gauche ou droit.
- S’il n’y a aucune correspondance dans l’un des DataFrames, les valeurs nulles sont incluses dans le résultat.
Syntaxe:
val resultDF = df1.join(df2, « commonColumn », « full_outer »)
Exemple:
-
Semi-jointure gauche :
- Renvoie uniquement les lignes du DataFrame de gauche pour lesquelles il existe une correspondance dans le DataFrame de droite.
- Il n’inclut aucune colonne du DataFrame droit dans le résultat.
Syntaxe:
val resultDF = df1.join(df2, « commonColumn », « left_semi »)
Exemple:
-
Anti-jointure gauche :
- Renvoie uniquement les lignes du DataFrame de gauche pour lesquelles il n’y a aucune correspondance dans le DataFrame de droite.
- Il n’inclut aucune colonne du DataFrame droit dans le résultat.
Syntaxe:
val resultDF = df1.join(df2, « commonColumn », « left_anti »)
Exemple:
-
Jointure croisée :
- Renvoie le produit cartésien des deux DataFrames, résultant en toutes les combinaisons possibles de lignes.
- Cela peut être coûteux en termes de calcul pour les grands ensembles de données.
Syntaxe:
val resultDF = df1.crossJoin(df2)
Exemple:
Ces exemples illustrent la syntaxe de base et la fonctionnalité des jointures Spark Scala SQL. Dans chaque cas, remplacez colonne commune avec la ou les colonnes réelles que vous souhaitez utiliser pour la jointure. Selon le cas d’utilisation, vous pouvez choisir le type approprié de jointure pour combiner et analyser efficacement vos données dans un environnement informatique distribué.
Conclusion:
Trame de données rejoint Apache Spark représente un aspect fondamental de l’analyse et de la manipulation des données, en particulier dans les environnements distribués et à grande échelle. Ces opérations faciliter la fusion d’ensembles de données basés sur des colonnes communes ou des critères spécifiés, permettant une intégration transparente des données pour diverses tâches analytiques. Avec le riche ensemble d’API de Spark conçues pour Trame de données jointures, les utilisateurs ont la flexibilité d’exécuter efficacement diverses opérations de jointure. Si c’est fusionnant des ensembles de données disparates ou effectuant des analyses complexes sur des données structurées, Apache Spark Trame de données Les jointures fournissent une solution robuste pour gérer divers défis d’intégration de données dans les écosystèmes Big Data modernes.
Source link