メインコンテンツまでスキップ

S3 での Delta Lake の制限

Databricks上のDelta Lakeは、Amazon S3でテーブルを保存する際に、バケットのバージョン管理制約、マルチクラスタの書き込み制限、ファイルを直接削除することのリスクなど、特定の制限があります。

バケットのバージョニングと Delta Lake

Databricksは、Delta Lakeデータを保存するバケット(Unity Catalog マネージドテーブルを含む)についてはバケットのバージョン管理を無効にすることを推奨しています。Delta Lakeは独自のバージョン管理とガベージコレクションを実装しています。

バケットバージョン管理を有効にすると、S3はDatabricksの手動・自動処理が削除されたとみなすメタデータやデータファイルのコピーを保持します。これには、VACUUMが永続的に削除するデータファイル、および通常のDelta Lakeテーブル操作中に自動的にクリーンアップされるトランザクションログが含まれます。

重要

バケットのバージョニングを使用する場合、Databricks では、3 つのバージョンを保持し、バージョニングが有効になっているすべての S3 バケットのバージョンを 7 日以内保持するライフサイクル管理ポリシーを実装することをお勧めします。

バケットに保存されたテーブルでバージョン管理が有効になった場合、Databricksサポートに連絡する際にバケットバージョン管理が有効であることを伝えてください。

マルチクラスタ書き込みの制限

警告

データの破損やデータ損失を避けるために、Databricksは異なるワークスペースからS3に保存されている同じDelta Lakeテーブルを改変しないことを推奨しています。

Amazon S3で最終的に 一貫 したモデルが使われているため、複数のシステムやクラスターが同じテーブル内のデータを同時に変更すると問題が生じる可能性があります。

Databricks と Delta Lake はデフォルトでマルチクラスター書き込みをサポートしているため、複数のクラスターから同時にテーブルに書き込むクエリによってテーブルが破損することはありません。S3 に格納されている Delta Lake テーブルの場合、この保証は 1 つの Databricks ワークスペースに制限されます。

このモードで実行している場合、次の機能はサポートされません。

マルチクラスターの書き込みをオフにするには、spark.databricks.delta.multiClusterWrites.enabledfalseに設定します。無効になっている場合、1 つのテーブルへの書き込みは、1 つのクラスターから行う必要があります。

警告

spark.databricks.delta.multiClusterWrites.enabledをオフにして 複数のクラスタの 同じDelta Lakeテーブルを同時に変更すると、データ損失や破損の原因になる可能性があります。

Databricksにおけるマルチクラスタ書き込みの詳細については、「 Databricks S3 コミットサービス関連設定」をご覧ください。

ファイルを削除した後の古いデータ rm -rf

Delta Lake テーブルを削除するには、rm -rfを使用しないでください。テーブルの削除または置換を参照してください。