如何更新火花数据框中的特定单元格值?

时间:2018-05-21 20:49:50

标签: python pyspark apache-spark-sql

我有两个数据帧。我需要从数据帧中找到一个值并更新特定行的单元格。

实施例。

Df1 = (a, 10), (b, 20), (c, 30)
Df2 = (a, A1), (c, C1)

预期产出:

(A, 10, A1), (b, 20, NaN), (c, 30, C1)

请在解决方案中详细说明,因为我刚开始使用spark数据帧。

2 个答案:

答案 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()