[英]How to select specific columns from Spark DataFrame based on the value of another column?
[英]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.