Scala中可以使用DataFrame的join方法来匹配两个DataFrame,并更新第一个DataFrame中的键。具体步骤如下:
import org.apache.spark.sql.{DataFrame, SparkSession}
import org.apache.spark.sql.functions._
val spark = SparkSession.builder()
.appName("DataFrame Join")
.master("local")
.getOrCreate()
val df1 = spark.createDataFrame(Seq(
(1, "John"),
(2, "Mike"),
(3, "Anna")
)).toDF("id", "name")
val df2 = spark.createDataFrame(Seq(
(1, "New York"),
(2, "London"),
(4, "Paris")
)).toDF("id", "city")
val joinedDF = df1.join(df2, Seq("id"), "left_outer")
.withColumn("name", when(col("city").isNull, col("name")).otherwise(col("city")))
.drop("city")
这里使用了left_outer连接,保留了第一个DataFrame的所有行,并将第二个DataFrame中匹配到的行合并到一起。使用withColumn方法,当city列为空时,将name列的值保留,否则将city列的值更新到name列中。最后使用drop方法删除city列。
joinedDF.show()
以上代码将输出更新后的DataFrame,其中键匹配成功的行会更新name列的值为city列的值,键匹配失败的行会保留原来的name列的值。
关于Scala的更多信息和学习资源,可以参考腾讯云的Scala产品介绍页面: Scala产品介绍
领取专属 10元无门槛券
手把手带您无忧上云