我有两个数据帧。我需要从数据帧中找到一个值并更新特定行的单元格。
实施例。
Df1 = (a, 10), (b, 20), (c, 30)
Df2 = (a, A1), (c, C1)
预期产出:
(A, 10, A1), (b, 20, NaN), (c, 30, C1)
请在解决方案中详细说明,因为我刚开始使用spark数据帧。
答案 0 :(得分:0)
您可以分两步完成此结果。
leftOuterJoin
将为您提供一对RDD与(a, (10, A1))
map
,您可以将对转换为预期结果答案 1 :(得分:0)
您可以使用以下代码:
val d1 = Array(("a", "10"), ("b", "20"), ("c", "30"))
val rdd1= sc.parallelize(d1)
val df1 = rdd1.toDF("key","val")
val d2 = Array(("a", "A1"), ("c", "C1"))
val rdd2 = sc.parallelize(d2)
val df2 = rdd2.toDF("key","div")
val res = df1.join(df2,Seq("key"),"left_outer")
res.show()