如何在Spark Scala中更新DataFrame的多列

时间:2019-03-23 20:48:22

标签: scala apache-spark 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。

0 个答案:

没有答案