我的要求是为age创建类别.我正在尝试在UDF中编写多个if条件但是它正在使用其他条件.我的代码如下.
我的数据
1,Ashok,23,asd
2,Joi,27,dfs
3,Sam,30,dft
4,Bob,37,dat
Run Code Online (Sandbox Code Playgroud)
我的代码
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()
Run Code Online (Sandbox Code Playgroud)
输出我得到了
1,Ashok,23,asd,38+
2,Joi,27,dfs,38+
3,Sam,30,dft,38+
4,Bob,37,dat,38+
Run Code Online (Sandbox Code Playgroud)
对于每行显示38+,请建议语法.
我有下面的数据框,我需要将空数组转换为null。
+----+---------+-----------+
| id|count(AS)|count(asdr)|
+----+---------+-----------+
|1110| [12, 45]| [50, 55]|
|1111| []| []|
|1112| [45, 46]| [50, 50]|
|1113| []| []|
+----+---------+-----------+
Run Code Online (Sandbox Code Playgroud)
我试过下面的代码不起作用。
df.na.fill("null").show()
Run Code Online (Sandbox Code Playgroud)
预期输出应为
+----+---------+-----------+
| id|count(AS)|count(asdr)|
+----+---------+-----------+
|1110| [12, 45]| [50, 55]|
|1111| NUll| NUll|
|1112| [45, 46]| [50, 50]|
|1113| NUll| NUll|
+----+---------+-----------+
Run Code Online (Sandbox Code Playgroud)