如何更改数据框列列表的列类型

时间:2017-12-14 12:20:10

标签: scala hadoop apache-spark dataframe casting

我正在尝试更改Spark 1.6.0中Dataframe的列列表类型。

到目前为止找到的所有示例只允许转换为单个列(df.withColumn)或数据帧中的所有列:

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

对于数据框中的列列表,是否有任何有效的批处理方法?

1 个答案:

答案 0 :(得分:1)

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)
): _*)

*单个选择的执行计划与链式withColumn的执行计划相同。