連接後下載完整結果時出錯

如果在連接之後有重複的列,那麼在嚐試下載完整結果時將會出現錯誤。

寫的manjunath.swamy

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

問題

你的筆記本上有兩張表。您執行一個連接。您可以預覽輸出,但當您嚐試全部結果下載你會得到一個錯誤。

錯誤在SQL語句:AnalysisException: Found duplicate column(s)當插入到dbfs:/ databicks -results/

複製錯誤

  1. 創建兩個表。
    從pyspark.sql.functions導入* df = spark.range(12000) df = df. withcolumn ("col2",lit("test")) df. createorreplacetempview ("table1") df1 = spark.range("table2")
  2. 在表上執行左外部連接。
    select * from table1 t1 left join table2 t2 on t1。id = t2.id
  3. 點擊下載預覽.CSV文件下載完成。
  4. 點擊全部結果下載.產生錯誤。

導致

  • 下載預覽之所以能夠正常工作,是因為這是在瀏覽器中運行的僅前端操作。沒有檢查任何約束,CSV文件中隻包含1000行。
  • 全部結果下載在Apache Spark中重新執行查詢,並在內部寫入CSV文件。當連接操作後發現重複的列時,會發生錯誤。

解決方案

選項1

如果選擇所有必需的列,並在聯接操作後避免重複列,則不會得到錯誤,並可以下載完整的結果。

% sql select t1。id、t1。Col2 from table1 t1 left join table2 t2 on t1。id = t2.id

選項2

可以使用數據幀來防止列重複。如果連接操作之後沒有重複的列,則不會得到錯誤,可以下載完整的結果。

%python result_df = df。加入(df1 (" id "),“左”)顯示(result_df)