У меня есть Spark (версия 1.6) Dataframe
, и я хотел бы добавить столбец со значением, содержащимся в Scala Map, это мой упрощенный код:
val map = Map("VAL1" -> 1, "VAL2" -> 2)
val df2 = df.withColumn("newVal", map(col("key")))
Этот код нене работает, и, очевидно, я получаю следующую ошибку, потому что карта ожидает значение String при получении столбца:
found : org.apache.spark.sql.Column
required: String
Единственный способ, которым я мог бы сделать это, - использовать UDF:
val map = Map("VAL1" -> 1, "VAL2" -> 2)
val myUdf = udf{ value:String => map(value)}
val df2 = df.withColumn("newVal", myUdf($"key"))
Я хочу по возможности избегать использования UDF.
Существуют ли другие доступные решения, использующие только API DataFrame (я также хотел бы избежать преобразования его в RDD)?