在連接兩個數據幀時防止列重複

學習如何在連接\Databricks中的兩個數據幀時防止重複列。

寫的亞當Pavlacka

最後發布時間:2022年5月31日

如果你在Spark中執行連接,並且沒有正確指定連接,你將會得到重複的列名。這使得選擇這些列變得更加困難。本文和筆記本演示了如何執行連接以避免列重複。

連接列上

如果你在列上連接,你會得到重複的列。

Scala

%scala val llist = Seq(("bob", "2015-01-13", 4), ("alice", "2015-04-23",10)) val left = llist. todf ("name","date","duration") val right = Seq(("alice", 100),("bob", 23)). todf ("name","upload") val df = left。加入(右,left.col(“名字”)= = = right.col(“名字”))

Python

% python llist =[(“鮑勃”,“2015-01-13”,4),(“愛麗絲”,“2015-04-23”,10)]=火花。createDataFrame(llist, ['name','date','duration']) right = spark。createDataFrame([(“愛麗絲”,100年),(“鮑勃”、23)],[“名稱”,“上傳”])df =。Join (right, left.name == right.name)

解決方案

將連接列指定為數組類型或字符串。

Scala

%scala val df = left。加入(右,Seq(“名字”))
%scala val df = left。“名稱”加入(右)

Python

%python df = left。(“名字”)加入(右)
%python df = left。“名稱”加入(右)

R

首先將數據幀注冊為表。

% python left.createOrReplaceTempView(“left_test_table”)right.createOrReplaceTempView(“right_test_table”)
%r庫(SparkR) SparkR .session() left <- sql("SELECT * FROM left_test_table") right <- sql("SELECT * FROM right_test_table")

上麵的代碼導致了重複的列。下麵的代碼不是。

%r head(drop(join(left, right, left$name == right$name), left$name))

加入數據幀與複製列筆記本

檢查加入DataFrames與重複列示例筆記本