2017-06-22 22 views
0

Q:1 私たちはADLAテーブルへの読み書きを並列化することを考えており、そのような設計が何を意味するのか疑問に思っていました。 私は読み取りがうまくいくと思いますが、同じADLAテーブルに同時に書き込みを行うのがベストプラクティスであるべきです。ADLAへの同時読み込み/書き込み

Q:2 同じ/異なるADLAテーブルに複数の行セットと複数の出力/挿入を持つUSQLスクリプトがあるとします。 USQLのトランザクションスコープの話は何ですか? output/insert文のいずれかが失敗した場合は、以前のすべての挿入がロールバックされるかどうかが判定されます。トランザクションスコープに

おかげ アミット

答えて

0

を処理する方法私が答える前に、私は(私はそれはあなたがテーブルではなく切り捨て/挿入への書き込みに何を意味するかだと仮定)あなたがテーブルに挿入するときに何が起こるかを説明しましょう。

INSERTステートメントは、テーブルの新しいエクステントファイルを作成します。したがって、新しい行を挿入すると(1行だけでなく、一度に多数の行を挿入することをお勧めします)、新しいファイルが作成され、ファイナライズ段階でメタデータが更新され、メタデータサービスはファイルが属することを認識しますテーブルに。

したがって、いくつかの挿入を並行して実行できるはずです。

次のようにトランザクションのスコープは、(Azureのデータ湖Analyticsのプラットフォームは、ビッグデータ処理ではなくOLTPプラットフォームですので、から選択するさまざまなトランザクションの保証を提供していないことに注意してください)現在:

バッチ処理U-SQLのADLAに4つの段階で行われる:

  1. 調製ジョブがすべての必要なリソースを待つコンパイル、最適化とコード生成
  2. キューが含ま
  3. 実際の実行時実行フェーズ
  4. ファイルとメタデータが永続化される最終段階。

実行時フェーズでは、ランタイムエラーが発生した場合、すべての頂点が成功または失敗します。だから、それはすべてか何もない。

処理がファイナライズフェーズに入ると、アトミック性はファイルまたはテーブルレベルに減少します。 3つのファイルを生成することがありますが、何らかの理由で1つのファイルをファイナライズすると失敗する場合ジョブは失敗しますが、成功した2つのファイルが作成されます。

関連する問題