Apache spark 如何在Spark UDF中编写多个If语句

Apache spark 如何在Spark UDF中编写多个If语句,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,我的要求是为年龄创建类别。我试图在UDF中编写多个if条件,但它采用else条件。我的代码如下 我的数据 1,Ashok,23,asd 2,Joi,27,dfs 3,Sam,30,dft 4,Bob,37,dat 我的代码 val sqlContext = new org.apache.spark.sql.SQLContext(sc) import org.apache.spark.sql.functions._ import org.apache.spark.sql.types._ impo

我的要求是为年龄创建类别。我试图在UDF中编写多个if条件,但它采用else条件。我的代码如下

我的数据

1,Ashok,23,asd
2,Joi,27,dfs
3,Sam,30,dft
4,Bob,37,dat
我的代码

val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import org.apache.spark.sql.functions._
import org.apache.spark.sql.types._
import org.apache.spark.sql._
import org.apache.spark.sql.SaveMode
import sqlContext.implicits._
val a = sc.textFile("file2.txt")
a.foreach(println)

val coder: (Int=>String)=(arg:Int)=>{if(arg>20&&arg<27) "20-27";if(arg>30&&arg<37) "30-37"; else "38+"}

val co = udf(coder)

val a2 = a1.select(col("Id"),col("Name"),col("Age"),col("Dpt"))

a2.withColumn("range",co(col("Age"))).show()

对于显示38+的每一行,请建议语法。

您应该使用
if-else if-else

此外,当您检查
arg>27&&arg时,您将跳过边界值
如果(x>=20&&x27&&x
1,Ashok,23,asd,38+
2,Joi,27,dfs,38+
3,Sam,30,dft,38+
4,Bob,37,dat,38+