【发布时间】:2017-06-19 05:51:04
【问题描述】:
由于VectorAssembler 崩溃,如果传递的列具有除NumericType 或BooleanType 之外的任何其他类型,并且我正在处理很多TimestampType 列,我想知道:
有没有简单的方法,一次投射多列?
基于this answer,我已经有了一种投单列的便捷方式:
def castColumnTo(df: DataFrame,
columnName: String,
targetType: DataType ) : DataFrame = {
df.withColumn( columnName, df(columnName).cast(targetType) )
}
我曾考虑递归调用castColumnTo,但我强烈怀疑这是(高性能)方法。
【问题讨论】:
-
是什么阻止您遍历列并调用此函数(无需递归)?
-
为什么需要递归?你的意思是迭代?请记住,Spark 是懒惰的,因此没有明显的理由说明它的性能不够
标签: scala apache-spark