你好,
我開發一個應用程序,運行多個進程,結果常見三角洲表寫成盲目的附加。根據我在線閱讀的文檔:https://docs.www.eheci.com/delta/concurrency-control.html protocolchangedexception&https://docs.delta.io/0.4.0/delta-concurrency.html,附加隻寫不應該引起並發問題。我遇到以下錯誤:
ProtocolChangedException:三角洲的協議版本表已經改變了一個並發更新。這發生在多個作家寫一個空目錄。創建表提前將避免這種衝突。請再次嚐試操作。衝突的提交:{“時間戳”:1642800186194,“標識”:“61587887627726”,“用戶名”:“用戶名”,“操作”:“寫”,“operationParameters”:{“模式”:附加,“partitionBy”:[“日期”、“GroupId”,“範圍”)},“筆記本”:{“notebookId”:“241249750697631”},“clusterId”:“”,“isolationLevel”:“WriteSerializable”、“isBlindAppend”:真的,“operationMetrics”: {“numFiles”:“56”、“numOutputBytes”:“267086”,“numOutputRows”: " 61 "}}引用https://docs.microsoft.com/azure/databricks/delta/concurrency-control為更多的細節。
背景:更多信息
def saveToDeltaTable (ds:數據集(類),dtPath:字符串)= {ds.write.format .partitionBy(“δ”)(“日期”、“GroupId”,“範圍”).option .mode (“mergeSchema”、“true”)(“追加”).save (dtPath)}
鑒於“ProtocolChangedException”中給出的描述文檔,它沒有多大意義對我來說這是崩潰。我唯一的想法是,這可能是由於mergeSchema國旗即使它是目前什麼都不做。
謝謝你!
米蓋爾