기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
특성 그룹에서 레코드를 삭제합니다.
Amazon SageMaker 특성 저장소를 사용하여 특성 그룹에서 레코드API를 삭제할 수 있습니다. 특성 그룹은 기계 학습(ML) 데이터를 포함하는 객체입니다.여기서 데이터 열은 특성별로 설명되고 데이터는 레코드에 포함됩니다. 레코드에는 특정 레코드 식별자와 관련된 특성의 값이 포함됩니다.
특성 그룹에는 온라인 저장소와 오프라인 저장소라는 두 가지 스토리지 구성이 있습니다. 온라인 저장소는 최신 이벤트 시간만 기록하며, 일반적으로 ML 추론을 위한 실시간 검색에 사용됩니다. 오프라인 저장소는 모든 레코드를 보관하고 과거 데이터베이스 역할을 하며 일반적으로 특성 탐색, ML 훈련 및 일괄 추론에 사용됩니다.
특성 저장소 개념에 대한 자세한 내용은 수집 다이어그램섹션을 참조하세요.
특성 그룹에서 레코드를 삭제하는 방법은 두 가지가 있으며 스토리지 구성에 따라 동작이 달라집니다. 다음 항목에서는 온라인 및 오프라인 저장소에서 레코드를 소프트 삭제 및 하드 삭제하는 방법을 설명하고 예제를 제공합니다.
온라인 저장소에서 레코드 삭제
DeletionMode
요청 파라미터를 사용하여 SoftDelete
(기본값) 또는 를 지정DeleteRecord
API하여 를 사용하여 온라인 스토어에서 레코드를 소프트 또는 하드 삭제할 수 있습니다HardDelete
. 에 대한 자세한 내용은 Amazon SageMaker API 참조DeleteRecord
의 DeleteRecord
API섹션을 참조하세요.
온라인 저장소 사용 시:
-
소프트 삭제(기본값)를 사용하면 GetRecord 또는 에서 레코드를 더 이상 검색할 수 없으며 BatchGetRecord 및 특성 값을
null
제외하고RecordIdentifer
EventTime
특성 열 값이 로 설정됩니다. -
하드 삭제 시 온라인 저장소에서 해당 레코드가 완전히 제거됩니다.
두 경우 모두 특성 저장소는 삭제된 레코드 마커를 OfflineStore
에 추가합니다. 삭제된 레코드 마커는 원본과 RecordIdentifer
는 동일하지만 is_deleted
값이 True
로, EventTime
값이 삭제 입력 EventTime
으로, 다른 특성 값이 null
로 설정됩니다.
동일한 RecordIdentifer
의 경우 DeleteRecord
에 지정한 EventTime
이 OnlineStore
에 있는 기존 레코드의 EventTime
이후로 설정되어야 한다는 점에 유의하세요. 그렇지 않으면 삭제되지 않습니다.
-
SoftDelete
의 경우, 기존(삭제되지 않은) 레코드는OnlineStore
에 남아 있으며, 레코드 삭제 마커는 여전히OfflineStore
에 기록됩니다. -
HardDelete
반환값EventTime
: 삭제 작업이 실패했음을 나타내는400 ValidationException
. 레코드 삭제 마커가OfflineStore
에 기록되지 않습니다.
다음 예제에서는 SDK Python용(Boto3) delete_record
-
특성 그룹 이름 (
)feature-group-name
-
식별자 값을 문자열로 레코드 (
)record-identifier-value
-
삭제 이벤트 시간 (
)deletion-event-time
삭제 이벤트 시간은 삭제하려는 레코드의 이벤트 시간보다 이후여야 합니다.
온라인 저장소 소프트 삭제 예제
소프트 삭제의 경우 를 사용해야 DeleteRecord
API 하며 기본값을 사용하거나 를 DeletionMode
로 DeletionMode
설정할 수 있습니다SoftDelete
.
import boto3 client = boto3.client('sagemaker-featurestore-runtime') client.delete_record( FeatureGroupName='
feature-group-name
', RecordIdentifierValueAsString='record-identifier-value
', EventTime='deletion-event-time
', TargetStores=[ 'OnlineStore', ], DeletionMode='SoftDelete' )
온라인 저장소 하드 삭제 예제
하드 삭제의 경우 DeleteRecord
API 를 사용하고 를 DeletionMode
로 설정해야 합니다HardDelete
.
import boto3 client = boto3.client('sagemaker-featurestore-runtime') client.delete_record( FeatureGroupName='
feature-group-name
', RecordIdentifierValueAsString='record-identifier-value
', EventTime='deletion-event-timestamp
', TargetStores=[ 'OnlineStore', ], DeletionMode='HardDelete' )
오프라인 저장소에서 레코드 삭제
Amazon SageMaker Feature Store를 사용하면 OfflineStore
Iceberg 테이블 형식에서 레코드를 소프트 및 하드 삭제할 수 있습니다. OfflineStore
Iceberg 테이블 형식 사용 시:
-
레코드를 소프트 삭제하면 최신 버전의 Iceberg 테이블 파일에는 레코드가 포함되지 않지만 이전 버전에는 여전히 레코드가 포함되며 타임 트래블을 사용하여 액세스할 수 있습니다. 타임 트래블에 대한 자세한 내용은 Athena 사용 설명서의 Iceberg 테이블 데이터 쿼리 및 타임 트래블 실행을 참조하세요.
-
레코드를 하드 삭제하면 해당 레코드가 포함된 이전 버전의 Iceberg 테이블이 제거됩니다. 이 경우 삭제하려는 Iceberg 테이블의 버전을 지정해야 합니다.
Iceberg 테이블 이름을 확인합니다.
OfflineStore
Iceberg 테이블을 소프트 삭제하거나 하드 삭제하려면 Iceberg 테이블 이름
을 확인해야 합니다. 다음 지침은 이미 특성 저장소를 사용하여 iceberg-table-name
DisableGlueTableCreation = False
(기본값)으로 Iceberg 테이블 형식을 사용하여 오프라인 저장소 스토리지 구성을 통해 특성 그룹을 생성했다고 가정합니다. 특성 그룹 생성에 대한 자세한 내용은 Amazon SageMaker Feature Store 시작하기섹션을 참조하세요.
를 가져오려면 를
사용하여 iceberg-table-name
DescribeFeatureGroup
API를 가져옵니다DataCatalogConfig
. 이것은 OfflineStore
의 데이터 카탈로그 역할을 하는 Glue 테이블의 메타데이터를 포함합니다. DataCatalogConfig
내의 TableName
은 사용자의
입니다.iceberg-table-name
Amazon Athena 오프라인 저장소 소프트 삭제 및 하드 삭제 예제
다음 지침은 Amazon Athena를 사용하여 OfflineStore
Iceberg 테이블에서 레코드를 소프트 삭제한 다음 하드 삭제합니다. 여기서는 삭제하려는 OfflineStore
레코드가 삭제된 레코드 마커라고 가정합니다. OfflineStore
의 삭제된 레코드 마커에 대한 자세한 내용은 온라인 저장소에서 레코드 삭제섹션을 참조하세요.
-
Iceberg 테이블 이름을 확인합니다. Iceberg 테이블 이름을 확인하는 방법에 대한 자세한 내용은 Iceberg 테이블 이름을 확인합니다.섹션을 참조하세요.iceberg-table-name
-
DELETE
명령을 실행하여OfflineStore
의 레코드를 소프트 삭제하여 Iceberg 테이블의 최신 버전(또는 스냅샷)에 레코드가 포함되지 않도록 합니다. 다음 예제에서는is_deleted
가'True'
인 레코드와 이벤트 시간 이전 버전을 삭제합니다.다른 특성에 따라 추가 조건을 추가하여 삭제를 제한할 수 있습니다. Athena로DELETE
사용에 대한 자세한 내용은 Athena 사용 설명서의DELETE
섹션을 참조하세요.DELETE FROM
iceberg-table-name
WHERErecord-id-feature-name
IS IN ( SELECTrecord-id-feature-name
FROMiceberg-table-name
WHERE is_deleted = 'True')소프트 삭제된 레코드는 타임 트래블을 통해 이전 파일 버전에서도 계속 볼 수 있습니다. 타임 트래블 실행에 대한 자세한 내용은 Athena 사용 설명서의 Iceberg 테이블 데이터 쿼리 및 타임 트래블 실행을 참조하세요.
-
이전 버전의 Iceberg 테이블에서 레코드를 삭제하여
OfflineStore
에서 레코코드를 하드 삭제합니다.-
OPTIMIZE
명령을 실행하여 관련 삭제 파일의 크기와 수에 따라 데이터 파일을 보다 최적화된 레이아웃으로 재작성합니다. Iceberg 테이블 및 구문 최적화에 대한 자세한 내용은 Athena 사용 설명서의 Iceberg 테이블 최적화를 참조하세요.OPTIMIZE
iceberg-table-name
REWRITE DATA USING BIN_PACK -
(선택 사항, 한 번만 실행하면 됨)
ALTER TABLE
명령을 실행하여 Iceberg 테이블 세트 값을 변경하고 지정한 내용에 따라 이전 파일 버전이 언제 하드 삭제되는지 설정합니다. 이는vacuum_min_snapshots_to_keep
,vacuum_max_snapshot_age_seconds
속성에 값을 할당하여 수행할 수 있습니다. Iceberg 테이블 세트 속성 변경에 대한 자세한 내용은 Athena 사용 설명서ALTERTABLESETPROPERTIES의 섹션을 참조하세요. Iceberg 테이블 속성 키-값 페어에 대한 자세한 내용은 Athena 사용 설명서의 테이블 속성을 참조하세요.ALTER TABLE
iceberg-table-name
SET TBLPROPERTIES ( 'vacuum_min_snapshots_to_keep'='your-specified-value
', 'vacuum_max_snapshot_age_seconds'='your-specified-value
' ) -
VACUUM
명령을 실행하여 현재 버전에서 참조하지 않는 Iceberg 테이블에 더 이상 필요하지 않은 데이터 파일을 제거합니다. 삭제된 레코드가 현재 스냅샷에서 더 이상 참조되지 않은 후에VACUUM
명령을 실행해야 합니다. 예 : 삭제 후vacuum_max_snapshot_age_seconds
. AthenaVACUUM
및 구문에 대한 자세한 내용은VACUUM
섹션을 참조하세요.VACUUM
iceberg-table-name
-
Apache Spark 오프라인 저장소 소프트 삭제 및 하드 삭제 예제
Apache Spark를 사용하여 OfflineStore
Iceberg 테이블에서 레코드를 소프트 삭제한 다음 하드 삭제하려면 Spark 절차를 사용하여 위의 Amazon Athena 오프라인 저장소 소프트 삭제 및 하드 삭제 예제지침을 따르세요. 전체 절차 목록은 Apache Iceberg 설명서의 Spark 절차
-
OfflineStore
에서 소프트 삭제 시 Athena에서DELETE
명령을 사용하는 대신 Apache Spark에서DELETE FROM
명령을 사용합니다. -
이전 버전의 Iceberg 테이블에서 레코드를 삭제하여
OfflineStore
에서 레코드를 하드 삭제합니다.-
Iceberg 테이블 구성 변경 시 Athena의
ALTER TABLE
명령을 사용하는 대신 https://iceberg.apache.org/docs/1.3.1/spark-procedures/#expire_snapshotsexpire_snapshots
절차를 사용합니다. -
Iceberg 테이블에서 더 이상 필요하지 않은 데이터 파일을 제거하려면 Athena에서
VACUUM
명령을 사용하는 대신remove_orphan_files
절차를 사용합니다.
-