

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

# Iceberg メタデータ管理
<a name="feature-store-iceberg-metadata-management"></a>

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

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

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

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

## IcebergProperties タイプ
<a name="feature-store-iceberg-properties-type"></a>

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

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

### プロパティの検証
<a name="feature-store-iceberg-validating-properties"></a>

キーが無効で重複している場合、作成または更新関数に渡されるとエラーが発生します。オプションで、 `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 プロパティを使用して特徴量グループを作成する
<a name="feature-store-iceberg-create"></a>

`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 プロパティを更新する
<a name="feature-store-iceberg-update"></a>

`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 プロパティを表示する
<a name="feature-store-iceberg-get"></a>

`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"}
```

## 必要なアクセス許可
<a name="feature-store-iceberg-permissions"></a>

[AmazonSageMakerFeatureStoreAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerFeatureStoreAccess.html) と [AmazonSageMakerFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerFullAccess.html) 管理ポリシーの両方が、使用している IAM ロールにアタッチされていることを確認します。アクセスパターンに基づいてポリシーを管理します。

## 許可された Iceberg プロパティ
<a name="feature-store-iceberg-allowed-properties"></a>

次の表に、Feature Store での使用が検証された Iceberg テーブルのプロパティを示します。これらのプロパティの詳細については、Apache Iceberg ドキュメントの[「テーブル設定](https://iceberg.apache.org/docs/latest/configuration/)」を参照してください。


**許可された 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) | 分割を組み合わせる際の最小重みとして使用される、ファイルを開くための推定コスト。 | 