下面是我的Spark函数,这是直截了当的
def doubleToRound(df:DataFrame,roundColsList:Array[String]): DataFrame ={
var y:DataFrame = df
for(colDF <- y.columns){
if(roundColsList.contains(colDF)){
y = y.withColumn(colDF,functions.round(y.col(colDF),2))
}
}
这与预期的一样,通过使给定df的多列值将十进制值四舍五入到2个位置。但是我在Dataframey中循环,直到列数组[sting].length()出现。有没有更好的办法?
谢谢大家
1条答案
按热度按时间bqf10yzr1#
你可以简单地使用
select
还有一个map
如下例所示:使之成为一种方法:
或者,使用
foldLeft
以及withColumn
具体如下: