在执行连接时更新 Spark 中的数据帧列名称 - Scala

JKC*_*JKC 2 scala apache-spark spark-dataframe

我在 Apache Spark 2.1.0 中有两个数据帧 aaa_01 和 aaa_02。

我对这两个数据帧执行内部连接,从两个数据帧中选择几个列以显示在输出中。

Join 工作得很好,但输出数据帧的列名与输入数据帧中的列名相同。我被困在这里。我需要有新的列名,而不是在我的输出数据框中获得相同的列名。

下面给出示例代码以供参考

DF1.alias("a").join(DF2.alias("b"),DF1("primary_col") === DF2("primary_col"), "inner").select("a.col1","a.col2","b.col4")
Run Code Online (Sandbox Code Playgroud)

我正在获取列名为“col1、col2、col3”的输出数据框。我试图修改代码如下但徒劳无功

DF1.alias("a").join(DF2.alias("b"),DF1("primary_col") === DF2("primary_col"), "inner").select("a.col1","a.col2","b.col4" as "New_Col")
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏。提前致谢。

已编辑

我浏览并得到了下面给出的类似帖子。但我没有看到我的问题的答案。

在 spark 中更新数据框列

在 spark scala 中重命名数据框的列名

这篇文章中的答案:Spark Dataframe 区分具有重复名称的列与我无关,因为它与 pyspark 的相关性比 Scala 更大,并且它已经解释了如何重命名数据帧的所有列,而我的要求是只重命名一个或几个列。

Fab*_*ich 5

您想重命名数据集的列,您的数据集来自连接这一事实不会改变任何内容。你可以尝试这个答案中的任何例子,例如:

DF1.alias("a").join(DF2.alias("b"),DF1("primary_col") === DF2("primary_col"), "inner")
    .select("a.col1","a.col2","b.col4")
    .withColumnRenamed("col4","New_col")
Run Code Online (Sandbox Code Playgroud)