

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Iceberg 메타데이터 관리
<a name="feature-store-iceberg-metadata-management"></a>

Iceberg 테이블 형식으로 특성 그룹을 생성하면 Amazon SageMaker 특성 저장소는 기본 구성 값을 사용하여 사용자를 대신하여 기본 Iceberg 테이블을 생성하고 관리합니다. 특성 그룹 생성 시 Iceberg 테이블 속성을 구성하고, 기존 특성 그룹의 속성을 업데이트하고, 테이블에 현재 설정된 속성을 볼 수 있습니다. 이러한 설정을 통해 스냅샷 보존, 메타데이터 파일 관리, 쓰기 동작과 같은 구성 파라미터를 제어하여 오프라인 저장소 테이블의 전체 크기와 성능을 관리할 수 있습니다.

Iceberg 테이블 속성의 하위 집합만 특성 저장소와의 호환성이 검증되었습니다. 이 지원되는 세트 외부에서 속성을 구성한다고 해서 올바른 동작이 보장되는 것은 아닙니다. 지원되는 속성의 전체 목록은 섹션을 참조하세요[허용된 Iceberg 속성](#feature-store-iceberg-allowed-properties).

**사전 조건:** 특성 그룹에 Iceberg 테이블 형식을 사용하는 오프라인 저장소가 있어야 합니다.

**중요**  
허용되지 않는 Iceberg 속성이 변경되면 특성 저장소는 지속적인 호환성을 보장할 수 없으며 오프라인 저장소에 쓰지 못할 수 있습니다.

## 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 속성을 업데이트하기 전에 생성이 완료될 때까지 기다립니다.

또는를 생성하고 `create`를 `FeatureGroup`호출한 다음 특성 그룹 객체를 `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` 파라미터를 수락합니다. 로 설정하면 수동으로 설정되고 허용된 목록의 일부인 Iceberg 속성을 `True`검색하여 반환된 객체의 `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>

다음 표에는 특성 저장소와 함께 사용하도록 검증된 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 (512MB) | 이 바이트 수를 대상으로 생성된 파일의 크기를 제어합니다. | 
| write.delete.target-file-size-bytes | 67108864 (64MB) | 이 바이트 수를 대상으로 생성된 삭제 파일의 크기를 제어합니다. | 
| 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 | 생성된 삭제 파일의 세부 수준을 제어합니다file. partition 또는 . | 
| write.parquet.row-group-size-bytes | 134217728 (128MB) | Parquet 행 그룹 크기입니다. | 
| read.split.target-size | 134217728 (128MB) | 데이터 입력 분할을 결합할 때의 대상 크기입니다. | 
| read.split.metadata-target-size | 33554432 (32MB) | 메타데이터 입력 분할을 결합할 때의 대상 크기입니다. | 
| read.split.open-file-cost | 4194304 (4MB) | 분할을 결합할 때 최소 가중치로 사용되는 파일을 여는 예상 비용입니다. | 