Вы можете создать карту сопоставлений scala следующим образом:
object Countries extends Enumeration {
type Countries=Mapping
case class Mapping(abr:String,value:String) extends Val
val FR=Mapping("FR","France")
val ES=Mapping("ES","Spain")
val IT=Mapping("IT","ITALY")
val map: Map[String, String] = List(FR, ES, IT).map(mapping => (mapping.abr -> mapping.value)).toMap
}
Теперь map
содержит необходимые сопоставления. Следующее, что нужно сделать, - это перебрать кадр данных, и мы можем использовать созданную нами карту, чтобы получить название страны, используя код страны:
object Application extends App {
//create spark session and dataframe here
val countryMapping = Countries.map
val dataSet = df.as[(String, String)] //convert to dataSet for iteration with type safety
val resultDS = dataSet.map{ case (id, code) => (id, countryMapping.get(code))}
val resultDF = resultDS.toDF("Id", "Country") //convert back to dataframe
resultDF.show
}