Sparkが過剰なファイルを書き換えているか確認する
DELETEDelta Lakeテーブルに対する UPDATE、および MERGE 操作は、変更するデータよりもはるかに多くのデータを書き込む可能性があります。削除ベクトルがないと、単一の行を変更する場合、その行を含むParquetファイル全体を書き換える必要があります。小さな変更が多くのファイルに影響を与える場合、書き込みステージでは、それらのファイル内の変更されていないすべての行も書き換えられます。
最長のステージの出力が大きく、DELETE、UPDATE、またはMERGEを実行している場合にこのページを使用します。ステージの出力を確認するには、「高出力」を参照してください。
SQL DAGで書き込みを確認します
書き込みステージが書き込むデータ量を確認するには、次の手順を実行します。
-
ジョブ ページの上部にスクロールし、 関連付けられた SQL クエリー をクリックします。

SQL DAGが表示されます。表示されない場合は、下にスクロールして探してください。

-
書き込みノードを見つけて、書き込まれるデータの量を確認します:
-
DELETEまたはUPDATEの場合、書き込まれたデータ量を予想量と比較します。操作によって予想よりもはるかに多くのデータが書き込まれる場合、データが書き換えられている可能性があります:
-
MERGEについては、Mergeノードに、どの程度のデータが書き換えられたかを示す明示的な統計が表示されます。
-
テーブル履歴の確認
書き換えを確認するには、テーブル履歴の操作メトリクスを確認してください。MERGE の場合、 numTargetRowsCopied を挿入、更新、および削除された行と比較します。DELETE と UPDATE については、 numCopiedRows を確認してください。コピーされた行数が変更された行よりはるかに多い場合、その操作によって変更されていないデータが書き換えられたことを示します。操作メトリクスを参照してください。
書き換えを減らす
操作によって多くのデータが書き換えられる場合は、次のアプローチを試してください:
- 削除ベクトルを有効にする。 削除ベクトルは、Parquetファイルを書き換えることなく、行を削除済みまたは変更済みとしてマークします。
MERGEオペレーションを調整します。 マッチ条件に既知の制約を追加して探索空間を縮小してください。その他のMerge調整アプローチについては、 「ベストプラクティス:Delta Lake」を参照してください。