If else condition in scala spark - In SQL Case When
In SQL world, very often we write case when statement to deal with conditions. Spark also provides “when function” to deal with multiple conditions.
In this article, will talk about following:
| Roll | First Name | Age | Last Name | Gender |
|---|---|---|---|---|
| 1 | Rahul | 18 | Yadav | Male |
| 2 | priya | 27 | gupta | Female |
| 3 | Ranjan | 27 | kumar | Male |
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions.{col, concat_ws, lit, when}
object CaseWhenSparkScala {
def main(args: Array[String]): Unit = {
val sparkSession = SparkSession
.builder()
.appName("Case When Spark in Scala with example")
.master("local")
.getOrCreate()
val testDF=sparkSession.read.option("header","true").csv("data/csv/test2.csv")
//to print schema
testDF.printSchema()
val transformedDF=testDF.withColumn("full_name",
when(
//condition
col("gender")===lit("male"),
//value
concat_ws(" ",lit("Mr."),col("first_name"),col("last_name"))
). when(
//condition
col("gender")===lit("female"),
//value
concat_ws(" ",lit("Ms."),col("first_name"),col("last_name"))
).otherwise(
//else part
concat_ws(" ",
lit("Unknown"), col("first_name"),col("last_name"))
)
)
transformedDF.show()
sparkSession.stop()
}
}
As you can see in the output that one extra column hasb been added
Output: