val df = Seq((2L, "a", "foo", 3.0)).toDF
df.printSchema
// root
// |-- _1: long (nullable = false)
// |-- _2: string (nullable = true)
// |-- _3: string (nullable = true)
// |-- _4: double (nullable = false)
最简单的办法toDF方法
val schemas= Seq("id", "x1", "x2", "x3")
val dfRenamed = df.toDF(schemas: _*)
dfRenamed.printSchema
// root
// |-- id: long (nullable = false)
// |-- x1: string (nullable = true)
// |-- x2: string (nullable = true)
// |-- x3: double (nullable = false)
如果要重命名单个列,可以使用以下任select一项alias:
df.select($"_1".alias("x1"))
可以很容易到多列:
val lookup = Map("_1" -> "foo", "_3" -> "bar")
df.select(df.columns.map(c => col(c).as(lookup.getOrElse(c, c))): _*)
或者withColumnRenamed:
df.withColumnRenamed("_1", "x1")
这篇博客介绍了在Apache Spark中如何使用DataFrame进行列重命名,包括通过`toDF`方法和`select`或`withColumnRenamed`函数来实现。示例代码展示了如何将DataFrame的列从默认的 `_1`, `_2`, `_3`, `_4` 重命名为更有意义的字段名。这些技巧对于数据预处理和清理阶段非常实用。

被折叠的 条评论
为什么被折叠?



