Получить значение из столбца карты по умолчанию - PullRequest
0 голосов
/ 20 марта 2020

В настоящее время я использую df.withColumn("col", col("mapColumn").getItem("key")), но это дает мне значение null, если ключ отсутствует в столбце карты. Есть ли что-нибудь эквивалентное getOrElse("key", defaultCalue) в Spark / Scala?

Спасибо

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

Используйте coalesce, как показано ниже:

val df = Seq(
  (10, Map(1 -> "a", 2 -> "b")),
  (20, Map(3 -> "c"))
).toDF("idCol", "mapCol")

df.withColumn("mapValOf1", coalesce($"mapCol"(1), lit("unknown"))).show
// +-----+----------------+---------+
// |idCol|          mapCol|mapValOf1|
// +-----+----------------+---------+
// |   10|[1 -> a, 2 -> b]|        a|
// |   20|        [3 -> c]|  unknown|
// +-----+----------------+---------+
0 голосов
/ 20 марта 2020

используйте when предложение. что-то вроде

df.withColumn("col", when(col("mapColumn").getItem("key").isNotNull,col("mapColumn").getItem("key")).otherwise(lit("DEFAULT_VALUE")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...