scala - 从数据框中选择时重命名列名

标签 scala hadoop apache-spark dataframe pyspark

我有 2 个数据框:df1 和 df2,我将它们都加入到 id 列并将其保存到另一个名为 df3 的数据框。下面是我正在使用的代码,它按预期工作正常。

val df3 = df1.alias("tab1").join(df2.alias("tab2"),Seq("id"),"left_outer").select("tab1.*","tab2.name","tab2.dept","tab2.descr");

我想在上述语句中将 tab2.descr 列重命名为 dept_full_description。

我知道我可以像下面这样创建一个 seq val 并使用 toDF 方法

val columnsRenamed = Seq("id", "empl_name", "name","dept","dept_full_description") ;
df4 = df3.toDF(columnsRenamed: _*);

是否有任何其他方法可以在第一个语句本身中使用别名。我的最终目标不是明确列出大约 30-40 列。

最佳答案

我会在加入之前重命名:

df1.alias("tab1").join(
   df2.withColumnRenamed("descr", "dept_full_description").alias("tab2"),
   Seq("id"), "left_outer")

关于scala - 从数据框中选择时重命名列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45447420/

相关文章:

hadoop - 找不到Spark WebUI应用程序application_xyz

scala - 有没有办法覆盖 sbt-native-packager 中的 init 脚本模板?

hadoop - hiveserver2 在 hadoop 集群中频繁关闭

java - Java中带有Spark文件流的检查点

hadoop - Hive索引重建与PostgreSQL相比太慢

scala - Spark 3.0 中使用聚合器的通用 UDAF

scala - 如何在 Scala 中发现装箱/拆箱

string - 在 Scala 中使用 f 字符串插值器强制指定小数点分隔符

scala - 为什么 Scala 中的 groupBy 会改变列表项的顺序?

scala - 如何保存带引号的所有字段的 CSV?