如何更改dataframe列列表的列类型

nzk0hqpo  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(356)

我正在尝试更改spark 1.6.0中Dataframe列列表的类型。
然而,迄今为止发现的所有示例只允许对单个列(df.withcolumn)或Dataframe中的所有列进行强制转换:

val castedDF = filteredDf.columns.foldLeft(filteredDf)((filteredDf, c) => filteredDf.withColumn(c, col(c).cast("String")))

对于Dataframe中的列列表,有没有有效的批处理方法?

2uluyalo

2uluyalo1#

这没有错 withColumn *但你可以用 select 如果您愿意:

import org.apache.spark.sql.functions col

val columnsToCast: Set[String]
val outputType: String = "string"

df.select(df.columns map (
  c => if(columnsToCast.contains(c)) col(c).cast(outputType) else col(c)
): _*)
  • 单个select的执行计划与chained相同 withColumn .

相关问题