簡體   English   中英

如何在連接中選擇數據幀的所有列 - Spark-scala

[英]How to select all columns of a dataframe in join - Spark-scala

我正在連接 2 個數據框並選擇左框的所有列,例如:

val join_df = first_df.join(second_df, first_df("id") === second_df("id") , "left_outer")

在上面我想做 select first_df.* 。如何在 join 中選擇一個框架的所有列?

使用別名:

first_df.alias("fst").join(second_df, Seq("id"), "left_outer").select("fst.*")

假設你:

  1. 想使用 DataFrame 語法。
  2. 想要從 df1 中選擇所有列,但只從 df2 中選擇幾列。
  3. 由於 df1 中的列數,要明確列出很麻煩。

然后,您可能會執行以下操作:

val selectColumns = df1.columns.map(df1(_)) ++ Array(df2("field1"), df2("field2"))
df1.join(df2, df1("key") === df2("key")).select(selectColumns:_*)

我們也可以通過 leftsemi join 來實現。 leftsemi join 將從連接的數據框中選擇左側數據框中的數據。

在這里,我們基於列 col1 連接了兩個數據幀 df1 和 df2。

    df1.join(df2, df1.col("col1").equalTo(df2.col("col1")), "leftsemi") 

只是為了添加一種可能性,無需使用別名,我就可以在 pyspark 中使用

   first_df.join(second_df, "id", "left_outer").select( first_df["*"] )

不確定是否適用於此,但希望它有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM