View a markdown version of this page

Iceberg メタデータ管理 - Amazon SageMaker AI

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Iceberg メタデータ管理

Iceberg テーブル形式で特徴量グループを作成すると、Amazon SageMaker Feature Store はデフォルトの設定値を使用して、ユーザーに代わって基盤となる Iceberg テーブルを作成および管理します。特徴量グループの作成時に Iceberg テーブルプロパティを設定し、既存の特徴量グループのプロパティを更新して、テーブルに現在設定されているプロパティを表示できます。これらの設定により、スナップショットの保持、メタデータファイル管理、書き込み動作などの設定パラメータを制御して、オフラインストアテーブルの全体的なサイズとパフォーマンスを管理できます。

Iceberg テーブルプロパティのサブセットのみが Feature Store との互換性について検証されています。このサポートされているセットの外部でプロパティを設定しても、正しい動作は保証されません。サポートされているプロパティの完全なリストについては、「」を参照してください許可された Iceberg プロパティ

前提条件: 特徴量グループには Iceberg テーブル形式を使用するオフラインストアが必要です。

重要

許可されていない Iceberg プロパティが変更された場合、Feature Store は継続的な互換性を保証できず、オフラインストアへの書き込みができなくなる可能性があります。

IcebergProperties タイプ

IcebergProperties タイプは Iceberg プロパティ設定の検証済みラッパーを提供し、すべてのキーが許可されたセットに属し、エントリの重複を防ぎます。

class IcebergProperties(Base): """Configuration for Iceberg table properties in a Feature Group offline store.""" properties: Optional[Dict[str, str]] = None

プロパティの検証

キーが無効で重複している場合、作成または更新関数に渡されるとエラーが発生します。オプションで、 validate_property_keys()メソッドを使用してキーを検証できます。これは、既存のIcebergPropertiesオブジェクトからプロパティを追加または削除する場合に役立ちます。

iceberg_properties = IcebergProperties( # Validates on creation properties={ "write.target-file-size-bytes": "268435456", "write.delete.mode": "merge-on-read", } ) # Add non-allowed property iceberg_properties.properties.update({"write.delete.isolation-level": "Snapshot"}) # Validate again — throws error because of non-allowed property iceberg_properties.validate_property_keys()

Iceberg プロパティを使用して特徴量グループを作成する

FeatureGroupManager.create 関数は、 型の iceberg_propertiesパラメータを受け入れますIcebergProperties。特徴量グループを作成し、作成が完了するまで待ってから、基になる AWS Glue テーブルの Iceberg プロパティを更新します。

または、 を作成しFeatureGroup、 を呼び出してからcreate、特徴量グループオブジェクトを FeatureGroupManager クラスに渡し、特徴量グループの作成中にブロックされないupdateように を呼び出します。

fg = FeatureGroupManager.create( # ...other parameters... offline_store_config=OfflineStoreConfig( s3_storage_config=S3StorageConfig(s3_uri="s3://my-bucket/features/"), table_format="Iceberg", # Must use Iceberg table format ), iceberg_properties=IcebergProperties( properties={ "write.target-file-size-bytes": "536870912", "history.expire.min-snapshots-to-keep": "3", } ), )

既存の特徴量グループの Iceberg プロパティを更新する

update 関数は、 型の iceberg_propertiesパラメータを受け入れますIcebergProperties。既に作成された特徴量グループを取得し、オフラインストア AWS Glue Data Catalog の を取得し、指定された Iceberg プロパティを設定します。

fg = FeatureGroupManager.get(feature_group_name="my-feature-group") fg.update( iceberg_properties=IcebergProperties( properties={ "write.target-file-size-bytes": "268435456", "write.delete.mode": "merge-on-read", } ), )

特徴量グループの Iceberg プロパティを表示する

FeatureGroupManager.get 関数は include_iceberg_propertiesパラメータを受け入れます。に設定するとTrue、手動で設定され、許可されたリストの一部である Iceberg プロパティを取得し、返されたオブジェクトの iceberg_propertiesフィールドにそれらを追加します。

これにより、許可されたリストの一部であるセットプロパティのみが返されます。すべての AWS Glue テーブルプロパティを取得するには、 AWS Glue API を直接使用します。許可された Iceberg プロパティが表示されない場合、明示的に設定されておらず、デフォルト値が使用されます。

fg = FeatureGroupManager.get( feature_group_name="my-feature-group", include_iceberg_properties=True, ) print(fg.iceberg_properties.properties) # e.g. {"write.target-file-size-bytes": "536870912"}

必要なアクセス許可

AmazonSageMakerFeatureStoreAccessAmazonSageMakerFullAccess 管理ポリシーの両方が、使用している IAM ロールにアタッチされていることを確認します。アクセスパターンに基づいてポリシーを管理します。

許可された Iceberg プロパティ

次の表に、Feature Store での使用が検証された Iceberg テーブルのプロパティを示します。これらのプロパティの詳細については、Apache Iceberg ドキュメントの「テーブル設定」を参照してください。

許可された Iceberg テーブルのプロパティ
プロパティ デフォルトの値 説明
write.metadata.delete-after-commit.enabled false 各テーブルコミット後に最も古い追跡バージョンメタデータファイルを削除するかどうかを制御します。
write.metadata.previous-versions-max 100 追跡する以前のバージョンのメタデータファイルの最大数。
history.expire.max-snapshot-age-ms 432000000 (5 日間) スナップショットの有効期限が切れている間、テーブルとそのすべてのブランチに保持するスナップショットのデフォルトの最大有効期間。
history.expire.min-snapshots-to-keep 1 スナップショットの有効期限が切れている間、テーブルとそのすべてのブランチに保持するデフォルトのスナップショットの最小数。
history.expire.max-ref-age-ms Long.MAX_VALUE (永久) main ブランチ以外のスナップショット参照の場合、スナップショットの失効中に保持するスナップショット参照のデフォルトの最大有効期間。main ブランチは期限切れになりません。
write.target-file-size-bytes 536870912 (512 MB) このバイト数をターゲットにするために生成されるファイルのサイズを制御します。
write.delete.target-file-size-bytes 67108864 (64 MB) このバイト数をターゲットにするために生成された削除ファイルのサイズを制御します。
write.delete.mode copy-on-write 削除コマンドに使用されるモード: copy-on-writeまたは merge-on-read (v2 以降)。
write.update.mode copy-on-write 更新コマンドに使用されるモード: copy-on-writeまたは merge-on-read (v2 以降)。
write.delete.granularity partition 生成された削除ファイルの粒度を制御します: partitionまたは file
write.parquet.row-group-size-bytes 134217728 (128 MB) Parquet 行グループのサイズ。
read.split.target-size 134217728 (128 MB) データ入力分割を組み合わせる場合のターゲットサイズ。
read.split.metadata-target-size 33554432 (32 MB) メタデータ入力分割を組み合わせる場合のターゲットサイズ。
read.split.open-file-cost 4194304 (4 MB) 分割を組み合わせる際の最小重みとして使用される、ファイルを開くための推定コスト。