事務性寫入使用DBIO的雲存儲
Databricks DBIO包為Apache Spark作業提供對雲存儲的事務性寫操作。這解決了在原生雲設置中使用Spark時出現的許多性能和正確性問題(例如,直接寫入存儲服務)。
重要的
當您使用以。結尾的路徑訪問數據時,不尊重提交協議*
.例如,閱讀dbfs: / /我/路徑
是否隻在讀取時返回已提交的更改/ * dbfs: / /我/路徑
將返回目錄中所有數據文件的內容,而不管它們的內容是否已提交。這是一種預期的行為。
使用DBIO事務提交,元數據文件以_started_ < id >
而且_committed_ < id >
伴隨Spark作業創建的數據文件。通常不應該直接修改這些文件。相反,您應該使用真空
命令清除它們。
清理未提交的文件
要清除Spark作業遺留的未提交文件,請使用真空
命令刪除它們。正常情況下真空
在Spark任務完成後自動運行,但如果任務中止,也可以手動運行它。
例如,真空…保留1小時
刪除超過一小時的未提交文件。
重要的
避免吸塵時間少於一小時。可能導致數據不一致。
也看到真空.
——遞歸地清空輸出路徑真空/ /輸出/目錄/路徑的[保留<N>小時]——清空編目表的所有分區真空的表[保留<N>小時]
//遞歸清空輸出路徑火花.sql("VACUUM '/path/to/output/directory' [RETAIN HOURS]" )//清空編目表的所有分區火花.sql("VACUUM tableName [RETAIN HOURS]" )