Spark:用别名重命名多个列



假设我有一个模式如下的数据框架:

| -- comment: struct
|   |-- _1: string
|   |-- _2: string
|   |-- _3: string

当我使用df.select("comment.*")时,我得到了列为_1,_2,_3的数据帧。是否有可能使用alias方法更改别名?理想情况下应该是df.select($"comment.*".alias("a", "b", "c")) ?

即使df.select($"comment".alias("a"))也产生错误:

org.apache.spark.sql.AnalysisException: Invalid usage of '*' in expression 'alias';

您总是可以为select生成一个列序列:

val from = (1 to 3).map(i => col(s"comment._$i"))
val to = Seq("a", "b", "c")
df.select(from.zip(to).map { case (x, y) => x.alias(y) }: _*)

相关内容

  • 没有找到相关文章

最新更新