繁体   English   中英

如何从 spark dataframe 中删除特定列,然后删除 select 所有列

[英]How to drop specific column and then select all columns from spark dataframe

我在这里有一个场景 - 在一个 dataframe 中有 30 列,需要删除特定列和 select 剩余列并将其放入另一个 dataframe。 我怎样才能做到这一点? 我在下面试过。

val df1: DataFrame = df2.as(a).join( df3.as(b),col(a.key) === col(b.key), inner).drop(a.col1)
.select(" a.star ")

当我显示 df1 时,它仍然显示 col1。 有关解决此问题的任何建议。

drop需要一个没有表别名的字符串,所以你可以尝试:

val df1 = df2.as("a")
    .join(df3.as("b"), col("a.key") === col("b.key"), "inner")
    .drop("col1")
    .select("a.*")

或者,您可以过滤要选择的列,而不是删除列:

val df1 = df2.as("a")
    .join(df3.as("b"), col("a.key") === col("b.key"), "inner")
    .select(df2.columns.filterNot(_ == "col1").map("a." + _): _*)

这看起来就像你需要使用“left_semi”连接。

val df1 = df2.drop('col1).join(df3, df2("key") === df3("key"), "left_semi")

如果key是一个实际的列,您可以进一步简化语法

val df1 = df2.drop('col1).join(df3, Seq("key"), "left_semi")

最佳语法取决于您的真实数据的详细信息。 如果您需要在df2中专门引用 col1 因为存在歧义,请使用df2("col1")

left_semi连接从左表中获取所有列,以便在右表中找到匹配的行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM