【问题标题】:Spark sql dataframe drop all columns from alias table after joinSpark sql数据框在加入后从别名表中删除所有列
【发布时间】:2017-07-10 21:23:22
【问题描述】:

我正在尝试加入具有相同列名的两个数据框并计算一些新值。之后我需要删除第二个表的所有列。列的数量是巨大的。我怎样才能以更简单的方式做到这一点?我尝试了 .drop("table2.*"),但这不起作用。

【问题讨论】:

  • 即使.drop("table2.specificColumnName") 也不起作用;忘记.drop("table2.*")
  • 有人能解释一下为什么drop("foo.column") 不起作用吗?

标签: apache-spark


【解决方案1】:

您可以将select 与别名一起使用:

df1.alias("df1")
  .join(df2.alias("df2"), Seq("someJoinColumn"))
  .select($"df1.*", $"someComputedColumn", ...)

参考父母DataFrame:

df1.join(df2, Seq("someJoinColumn")).select(df1("*"), $"someComputedColumn", ...)

【讨论】:

    【解决方案2】:

    您可以选择所有需要保留的列以进行进一步操作,而不是删除,如下所示

    val newDataFrame = joinedDataFrame.select($"col1", $"col4", $"col6")
    

    【讨论】:

    • 不是这样,如果我在第二个表中有 50 列 + 50 列。我可以选择“table1.*”+新列的名称
    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    相关资源
    最近更新 更多