如果不存在添加数据框列的计算方式,是否有一种较便宜的计算方式?

时间:2018-12-18 01:07:28

标签: scala apache-spark dataframe

我有一个带有可选字段X的Spark数据框。如果该字段根本不存在,我想创建它并将其设置为等于A列。如果该字段存在但为空,那么我想对其进行设置等于A列。如果该字段存在且不为null,我想使用其中的值。

我目前正在这样做:

val df = spark.read.json("records.json") val dfWithColX = if (Try(df("X")).isSuccess) { df.withColumn("X", when(col("X").isNull, col("A")).otherwise(col("X"))) } else df.withColumn("X", col("A"))

是否有更高效的方法?

1 个答案:

答案 0 :(得分:0)

我不知道它是否更有效,但是最好检查一下而不捕获异常,例如:

val dfWithColX = if (df.columns.contains("X")) {
  df.withColumn("X", coalesce('X, 'A))
} else {
  df.withColumn("X", 'A)
}