Есть ли в вычислительном отношении менее дорогой способ добавить столбец данных, если он еще не существует? - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть Spark Dataframe с необязательным полем X. Если поле вообще не существует, я хочу создать его и установить равным столбцу A. Если поле существует, но имеет значение null, я хочу установить егоравно столбцу A. Если поле существует и не является нулевым, я хочу использовать значение, уже находящееся внутри него.

В настоящее время я делаю это следующим образом:

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 голосов
/ 19 декабря 2018

Я не знаю, является ли это более производительным, но кажется, что лучше просто проверять без перехвата исключений, например:

val dfWithColX = if (df.columns.contains("X")) {
  df.withColumn("X", coalesce('X, 'A))
} else {
  df.withColumn("X", 'A)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...