Personnellement, je préfère dataframe/dataset
comme ils sont optimisés formes de rdd
et avec plus fonctions et similaires encastrables aux bases de données traditionnelles.
Voici la façon dataframe
:
La première étape serait de convertir à la fois de la rdds
à dataframes
import sqlContext.implicits._
val df1 = rdd1.toDF("col1", "col2", "col3", "col4")
val df2 = rdd2.toDF("col1", "col2")
Deuxième étape serait d'ajouter une nouvelle column
en dataframe2
pour condition de filtrage vérification
import org.apache.spark.sql.functions._
val tempdf2 = df2.withColumn("check", lit("check"))
Et la dernière étape serait de join
les deux dataframes
, filter
et drop
les inutiles rows
et columns
.
val finalDF = df1.join(tempdf2, Seq("col1", "col2"), "left")
.filter($"check".isNull)
.drop($"check")
Vous devriez avoir finale dataframe
comme
+----+----+----+----+
|col1|col2|col3|col4|
+----+----+----+----+
|3 |5 |6 |12 |
|1 |4 |5 |13 |
+----+----+----+----+
Maintenant, vous pouvez convertir en rdd
en utilisant finalDF.rdd
ou vous pouvez continuer votre traitement ultérieur avec dataframe
lui-même. Je souhaite que la réponse est utile