翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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"}
必要なアクセス許可
AmazonSageMakerFeatureStoreAccess と AmazonSageMakerFullAccess 管理ポリシーの両方が、使用している IAM ロールにアタッチされていることを確認します。アクセスパターンに基づいてポリシーを管理します。
許可された Iceberg プロパティ
次の表に、Feature Store での使用が検証された Iceberg テーブルのプロパティを示します。これらのプロパティの詳細については、Apache 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) |
分割を組み合わせる際の最小重みとして使用される、ファイルを開くための推定コスト。 |