我有這個奇怪的錯誤。我有一個例程,如果它存在(或者另外創建一個),則讀取一個數據幀,修改它,然後以'覆蓋'模式再次以parquet格式將其保存在相同的目標路徑中。FileNotFoundException嘗試將DataFrame保存爲實木複合格式時,使用'覆蓋'模式
在第一次運行時,當沒有數據幀時,我創建一個並保存。它產生在輸出文件夾4個文件:
- _SUCCESS.crc
- 部分-R- < .....> snappy.parquet.crc
- _SUCCESS
- 部分-R- <。 .....>。snappy.parquet
然後,在第二輪,我讀數據框,修改它,當我嘗試覆蓋它,它拋出一個異常的*part-r-<.....>.snappy.parquet file does not exist*
。
當發生異常時,輸出文件夾爲空,但在執行df.write.parquet(path, 'overwrite')
之前,該文件夾包含此文件。
我試圖將spark.sql.cacheMetadata設置爲'false',但它沒有幫助。 spark.catalog.listTables()返回一個空列表,所以沒有意義刷新任何內容。
現在,我只需刪除輸出文件夾的項目,然後寫入數據幀。有用。但爲什麼「覆蓋」模式的原始方法失敗?
謝謝。
問題是,當你申請savemode作爲覆蓋,然後創建物理計劃後spark刪除目錄,你可以嘗試savemode作爲追加 –
我面臨同樣的問題和保存模式作爲附加也失敗,同時寫入從火花s3 – braj259