你好所有的,
我使用pyspark (python 3.8) / spark3.0磚。當運行這個DataFrame加入:
next_df = days_currencies_matrix.alias (' a ')。加入(data_to_merge.alias (b), [days_currencies_matrix。dt = = data_to_merge。RATE_DATE days_currencies_matrix。CURRENCY_CODE = = data_to_merge。CURRENCY_CODE],“左”)。\ (days_currencies_matrix選擇。CURRENCY_CODE days_currencies_matrix.dt.alias (RATE_DATE), data_to_merge。AVGYTD data_to_merge。ENDMTH data_to_merge。AVGMTH data_to_merge。AVGWEEK data_to_merge。AVGMTD)
我得到這個錯誤:
列AVGYTD # 67187, AVGWEEK # 67190, ENDMTH # 67188, AVGMTD AVGMTH # 67189, # 67191是模棱兩可的。它可能是因為你加入幾個數據集在一起,和一些這些數據集是相同的。這一列指向一個數據集,但火花無法找出哪一個。請別名與不同的名稱通過數據集的數據集。“加入他們之前,指定列使用限定名稱,例如:. join (df.as df.as (“a”) (“b”)、“一美元。美元id”>“b.id”)”。你也可以設置spark.sql.analyzer。failAmbiguousSelfJoin假禁用這張支票。
這是告訴我上麵列屬於一個以上的數據集。
這是為什麼發生?代碼告訴火花源dataframe;此外,days_currencies_matrix隻有2列:dt和CURRENCY_CODE。
是因為days_currencies_matrix DataFrame實際上是建立在data_to_merge嗎?是懶惰的相關評估或這是一個錯誤嗎?
順便說一句,這個版本沒有問題: