0
后编辑: 基于此article似乎Spark不能编辑和RDD或列。必须使用新类型创建一个新类型,并删除旧类型。以下建议的for循环和.withColumn方法似乎是完成工作的最简单方法。覆盖Spark数据帧架构
原文出处: 有没有简单的方法(对于人和机器)将多列转换为不同的数据类型?
我试图手动定义模式,然后使用此模式从实验室文件加载数据并将其保存到另一个文件,但我得到“作业中止。”......每次写入行时“任务失败”在每个DF上。对我来说有点容易,对Spark很费力......并且它不起作用。
另一种选择是使用:对我来说更
df = df.withColumn("new_col", df("old_col").cast(type)).drop("old_col").withColumnRenamed("new_col", "old_col")
一点的工作,因为有近100列,如果星火在内存复制每一列,那么这听起来既优化。有更容易的方法吗?
列不是全部相同的类型,所以我仍然必须使用元组列表。尽管如此,出于某种原因,我并不认为你可以用“withColumn”:)覆盖一个列,所以非常感谢你,它可以避免丢弃和重命名部分。 – UrVal
然后是的,我认为'(名称,类型)'对'foreach'将是你最好的选择。 –