我有兩個Spark DataFrames,其中一個有兩個cols,id和Tag。第二個DataFrame有一個id col,但沒有標籤。第一個Dataframe本質上是一個字典,每個id出現一次,而第二個DataFrame和id可能會出現多次。我需要的是在第二個DataFrame中創建一個新的列,其中標記作爲每行(在第二個DataFrame中)的id的函數。我認爲這可以通過首先轉換爲RDD來實現..但是我認爲必須有更優雅的使用DataFrame(Java)的方式。示例:給定a df1行→id:0,標記:「A」,a df2 Row1-> id:0,Tag:null,a df2 Row2-> id:0,Tag:「B」,我需要在生成的DataFrame df3中創建一個等於df1(id = 0)=「A」如果df2標記爲null,但保留原始標記如果不爲空=>導致df3 Row1-> id: 0,標記:「A」,df3 Row2-> id:0,標記:「B」。希望這個例子很明顯。如何基於第二個DataFrame(Java)在Spark DataFrame中創建新列?
| ID | No. | Tag | new Tag Col |
| 1 | 10002 | A | A |
| 2 | 10003 | B | B |
| 1 | 10004 | null | A |
| 2 | 10005 | null | B |
爲什麼一個簡單的'LEFT OUTER JOIN'不會爲你工作? – zero323
我編輯了這個問題,並將查看LOJ .. – Kai
LOJ並沒有完全解決它,但我認爲如果我跟着它與udf()然後我得到我所需要的。謝謝, – Kai