最近开发数据 归一化的需求,归一化的方法是对将需要处理的列转化为Vector,然后将df放到方法里面去执行,得到新的df
如果保留原始类,这个df只需要重新拆分,就可以
如果不保留原始列,这个df拆分后,还要进行新的判断,将处理后的列值替代原来的值
1._* 用法:
1)变长参数
如将vector 追加至原始df的时候
已经处理的列 val vec=features2Vector(row,keys)
val lb=ListBuffer(row.toSeq:_*)
lb.append(vec)
Row(lb.toArray:_*)
2)变量声明中的模式
val arr = Array(1,2,3,4,5)
val Array(1,2,_*)=arr
val Array(first, second, _*) = arr
first :1
second: 2
2.将处理后的df,含有Vector类型的值拆分
将获取Vector列的值,转化为Array类型
val vec = row.getAs[Vector]("scaledFeatures").toArray
获得原列的数据
val lb=ListBuffer(row.toSeq:_*)
val lb2=lb.dropRight(2)
val l2=vec.toList
lb2++=l2
Row(lb2.toList:_*)
3.将String类型的转化为Boolean
def getKO(p:String):Boolean={
if(p.isEmpty){
false
}else{
Try(p.toBoolean).getOrElse(false)
}
}
Try的apply方法