2017-06-22 161 views
0

問:1 我們正在考慮將讀/寫並行化爲ADLA表,並且想知道這種設計的含義是什麼。 我認爲讀取沒問題,但是應該將最佳做法同時寫入同一個ADLA表。並行讀取/寫入ADLA

問:2 假設我們有USQL腳本,它們在相同/不同的ADLA表中有多個行集和多個輸出/插入。什麼是USQL中的事務範圍故事。如果任何輸出/插入語句失敗,那麼它會導致所有以前的插入回滾或不回滾。如何處理事務範圍

感謝 阿米特

回答

0

我回答之前,讓我描述當您插入到表會發生什麼(我認爲這是你的意思寫一個表什麼,而不是截斷/插入)。

每個INSERT語句都會爲該表創建一個新的extent文件。因此,如果您插入新行(建議一次插入許多行而不是一行),則會創建一個新文件並在最終階段期間更新元數據,以便元數據服務知道該文件屬於到桌上。

所以你應該能夠並行運行多個插入。

的事務範圍目前如下(注意,Azure的數據湖分析平臺是一個很大的數據處理,而不是一個OLTP平臺,因此不提供不同的事務保證可供選擇):

批量處理U型SQL的ADLA在4個階段完成:

  1. 製劑含有其中一個作業等待所有所需的資源編譯,優化和代碼生成
  2. 排隊
  3. 實際運行時執行階段
  4. 完成階段,其中文件和元數據被保存。

在運行階段,如果發生運行時錯誤,則所有頂點成功或失敗。所以這是全部或沒有。

一旦處理進入完成階段,原子性就會降低到文件或表級別。您可能會生成3個文件,但最終確定一個文件可能由於某種原因失敗。那麼作業將失敗,但會成功創建2個成功的文件。