

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

# Amazon SageMaker 특성 저장소 오프라인 저장소 데이터 형식
<a name="feature-store-offline"></a>

Amazon SageMaker 특성 저장소는 오프라인 저장소에 대해 AWS Glue 및 Apache Iceberg 테이블 형식을 지원합니다. 새 특성 그룹을 생성할 때 테이블 형식을 선택할 수 있습니다.는 기본 형식 AWS Glue 입니다.

 Amazon SageMaker 특성 저장소 오프라인 저장소 데이터는 계정 내 Amazon S3 버킷에 저장됩니다. `PutRecord` 호출 시 15분 이내에 데이터가 버퍼 및 일괄 처리되어 Amazon S3에 기록됩니다. 특성 저장소는 오프라인 저장소에 데이터를 쓸 때만 Parquet 파일 형식을 지원합니다. 특히 오프라인 저장소에 데이터를 쓸 때 Amazon S3 버킷에서 Parquet 형식으로 데이터를 검색할 수 있습니다. 각 파일은 여러 `Record`를 포함할 수 있습니다.

Iceberg 형식의 경우 특성 저장소는 오프라인 저장소 데이터를 저장하는 데 사용하는 것과 동일한 Amazon S3 버킷에 테이블의 메타데이터를 저장합니다. `metadata` 접두사 아래에서 찾을 수 있습니다.

 또한 특성 저장소는 [OfflineStoreconfig.s3StorageConfig.resolvedOutputs3 URI ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3StorageConfig.html#sagemaker-Type-S3StorageConfig-ResolvedOutputS3Uri)필드를 노출하며, 이 필드는 [DescribeFeatureGroup](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeFeatureGroup.html) API 직접 호출에서 찾을 수 있습니다. 이 경로는 특정 특성 그룹의 파일이 작성되는 S3 경로입니다.

다음 추가 필드는 오프라인 저장소에 남아 있을 때 특성 저장소에서 각 레코드에 추가합니다.
+  **api\_invocation\_time** - 서비스가 `PutRecord`또는 `DeleteRecord`호출을 수신할 때의 타임스탬프입니다. 관리형 수집(예: Data Wrangler)을 사용하는 경우 오프라인 저장소에 데이터가 기록된 시점의 타임스탬프입니다.
+  **write\_time** - 오프라인 저장소에 데이터가 기록된 시점의 타임스탬프입니다. 타임 트래블 관련 쿼리를 구성하는 데 사용할 수 있습니다.
+  **is\_deleted** – 기본값은 `False`입니다. `DeleteRecord` 호출 시 새 `Record`가 `RecordIdentifierValue`에 삽입되고 오프라인 저장소의 `True`로 설정됩니다.

## Amazon SageMaker 특성 저장소 오프라인 저장소 URI 구조
<a name="feature-store-offline-URI-structure"></a>

다음 예제에서 `amzn-s3-demo-bucket`은 계정 내의 Amazon S3 버킷, `{{example-prefix}}`는 예제 접두사, `{{111122223333}}`은 계정 ID, `{{AWS 리전}}`은 리전, `{{feature-group-name}}`은 특성 그룹 이름입니다.

**AWS Glue 테이블 형식**

 AWS Glue 테이블 형식을 사용하여 저장된 오프라인 저장소의 레코드는 이벤트 시간별로 시간별 파티션으로 분할됩니다. 파티션 체계는 구성할 수 없습니다. 다음 URI 구조는 AWS Glue 형식을 사용한 Parquet 파일 구성을 보여줍니다.

```
s3://amzn-s3-demo-bucket/{{example-prefix}}/{{111122223333}}/sagemaker/{{AWS 리전}}/offline-store/{{feature-group-name}}-{{feature-group-creation-time}}/data/year={{year}}/month={{month}}/day={{day}}/hour={{hour}}/{{timestamp_of_latest_event_time_in_file}}_{{16-random-alphanumeric-digits}}.parquet
```

다음 예제는 `{{feature-group-name}}`이 `customer-purchase-history-patterns`인 파일에 대한 Parquet 파일의 출력 위치입니다.

```
s3://amzn-s3-demo-bucket/{{example-prefix}}/{{111122223333}}/sagemaker/{{AWS 리전}}/offline-store/customer-purchase-history-patterns-1593511200/data/year=2020/month=06/day=31/hour=00/20200631T064401Z_108934320012Az11.parquet
```

**Iceberg 테이블 형식**

Iceberg 테이블 형식으로 저장된 오프라인 저장소의 레코드는 이벤트 시간별로 일일 파티션으로 분할됩니다. 파티션 체계는 구성할 수 없습니다. 다음 URI 구조는 Iceberg 테이블 형식으로 저장된 데이터 파일의 구성을 보여줍니다.

```
s3://amzn-s3-demo-bucket/{{example-prefix}}/{{111122223333}}/sagemaker/{{AWS 리전}}/offline-store/{{feature-group-name}}-{{feature-group-creation-time}}/data/{{8-random-alphanumeric-digits}}/{{event-time-feature-name}}_trunc={{event-time-year}}-{{event-time-month}}-{{event-time-day}}/timestamp-of-latest-event-time-in-file_16-random-alphanumeric-digits.parquet
```

다음 예제는 `{{feature-group-name}}`이 `customer-purchase-history-patterns`, `{{event-time-feature-name}}`이 `EventTime`인 파일에 대한 Parquet 파일의 출력 위치입니다.

```
s3://amzn-s3-demo-bucket/{{example-prefix}}/{{111122223333}}/sagemaker/{{AWS 리전}}/offline-store/customer-purchase-history-patterns-1593511200/data/0aec19ca/EventTime_trunc=2022-11-09/20221109T215231Z_yolTtpyuWbkaeGIl.parquet
```

다음 예제는 Iceberg 테이블 형식으로 저장된 데이터 파일의 메타데이터 파일 위치입니다.

```
s3://amzn-s3-demo-bucket/{{example-prefix}}/{{111122223333}}/sagemaker/{{AWS 리전}}/offline-store/{{feature-group-name}}-{{feature-group-creation-time}}/metadata/
```