gpt4 book ai didi

scala - Scala和Spark : Cast multiple columns at once

转载 作者:行者123 更新时间:2023-12-04 16:58:27 24 4
gpt4 key购买 nike

由于 VectorAssembler 崩溃,如果传递的列具有NumericTypeBooleanType以外的任何其他类型,并且我正在处理许多TimestampType列,我想知道:

有一种简单的方法可以一次转换多列吗?

基于this answer,我已经有一种方便的方法来转换单个列:

def castColumnTo(df: DataFrame, 
columnName: String,
targetType: DataType ) : DataFrame = {
df.withColumn( columnName, df(columnName).cast(targetType) )
}

我曾考虑过递归调用 castColumnTo,但我强烈怀疑这是(性能)方法。

最佳答案

在scala中使用惯用方法类型转换所有列

def castAllTypedColumnsTo(df: DataFrame, sourceType: DataType, targetType: DataType) = {
df.schema.filter(_.dataType == sourceType).foldLeft(df) {
case (acc, col) => acc.withColumn(col.name, df(col.name).cast(targetType))
}
}

关于scala - Scala和Spark : Cast multiple columns at once,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41997462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com