取消
顯示的結果
而不是尋找
你的意思是:

有沒有更好的方法加入兩個dataframes沒有重複的列?

kruhly
新的貢獻者二世

我想保持隻有一列加入dataframes使用。使用select()加入後似乎並不直接,因為真實的數據可能會有很多列或列名稱可能不被人知道的。下麵一個簡單的例子

llist =[(“鮑勃”,“2015-01-13”,4),(“愛麗絲”,“2015-04-23”,10)]地區指定基金= sqlContext.createDataFrame (llist,(“名字”,“日期”,'時間'])打印ddf.collect () up_ddf = sqlContext。createDataFrame([(“愛麗絲”,100年),(“鮑勃”、23)],[“名稱”,“上傳”])

這讓“名稱”列當我們隻需要一個!

df =地區指定基金。加入(up_ddf ddf.name = = up_ddf.name)打印ddf.collect()顯示(ddf.select (ddf.name, ddf.duration / ddf.upload .alias (duration_per_upload)))

執行上麵顯示導致一個模棱兩可的名字錯誤:

org.apache.spark.sql。AnalysisException:引用“名字”是模棱兩可的,可以是:名字# 8484,# 8487。

錯誤可以避免通過使用從右手dataframe up_ddf.name加入

ddf.select (up_ddf.name……

但是似乎尷尬。有沒有更好的方法加入兩個dataframes和隻有一個“名稱”列?

12個回複12

Bill_Chambers
因素二世

這是在磚火花的常見問題:

http://docs.m.eheci.com/spark/latest/faq/join-two-dataframes-duplicated-column.html

我們會保持更新!

bharathk12
新的貢獻者二世

我跟著同樣的方式在上麵的文章。但沒有為我工作。

df1 & df2都相同的列集1006計數。結果與2012年創建列。

scala > df1。加入(df2 Seq (“file_name”、“post_evar30”))

res24: org.apache.spark.sql。DataFrame = [file_name:字符串,post_evar30:字符串…2012多個字段)

Ericewittry
新的貢獻者二世

404 - >沒有保持本文彙報。:disappointed_face:

jsharrett
新的貢獻者二世

下降()隻刪除列的特定數據幀實例。所以如果你有:

val new_ddf =地區指定基金。加入(up_ddf“名稱”)

然後在new_ddf兩列ddf.name up_ddf.name。

val new_ddf =地區指定基金。加入(up_ddf,“名字”).drop (up_ddf.col(“名字”)將刪除列,隻有離開ddf.name new_ddf。

bdas77
新的貢獻者二世

我怎麼複製在下降

我怎麼複製列left_outer /離開後加入。我注意到下降為內連接但同樣的工作不是為左加入工作,喜歡在這種情況下我想要從正確的複製連接列。

val列=右(joinColumn)

val測試= left.join(廣播(右),左(joinColumn) = = =右(joinColumn),“left_outer)

val newDF = test.drop(列)
歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map