首页 > 解决方案 > 如何在 Spark Scala 中更新 DataFrame 的多列

问题描述

我有带有列(A、B、C、D、E)的 DataFrame。有些行的 C 和 D 值错误。我有另一个 Map 具有正确的信息 (A -> (C, D))。如何更正 C 列和 D 列的值?

我知道我们可以使用 withColumn 方法来更新一列的值。所以我用 withColumn 两次来更新两列。

fixCUdf(A: Long, C: Long): Long = {
  if (newValuesMap.contains(A))
    newValuesMap(A)._1
  else
    C
}

fixDUdf(A: Long, D: Long): Long = {
  if (newValuesMap.contains(A))
    newValuesMap(A)._2
  else
    D
}

dataFrame.withColumn("C", fixCUdf(col("A"), col("C")))

dataFrame.withColumn("D", fixCUdf(col("A"), col("D")))

有没有更好的方法来做到这一点?我不必多次调用 fixXUdf 。

标签: scalaapache-sparkdataframe

解决方案


推荐阅读