本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
從特徵群組中刪除記錄
您可以透過 Amazon SageMaker Feature Store API 從特徵群組中刪除記錄。特徵群組是包含機器學習 (ML) 資料的物件,其中資料欄由特徵描述,而您的資料則包含在記錄中。記錄包含與特定記錄識別符相關聯的特徵值。
特徵群組有兩種儲存組態:線上儲存和離線儲存。線上儲存只會保留最新事件時間的記錄,通常用於機器學習 (ML) 推論的即時查詢。離線儲存會保留所有記錄,並做為歷史資料庫,通常用於特徵探索、機器學習 (ML) 訓練和批次推論。
若要取得有關特徵商店概念的更多資訊,請參閱擷取圖。
有兩種方法可以從特徵群組中刪除記錄,並且行為會根據儲存組態而有所不同。在下列主題中,我們將說明如何從線上和離線儲存軟刪除和硬刪除記錄,並提供範例。
從線上儲存刪除記錄
您可以使用 DeletionMode 要求參數來指定 SoftDelete (預設) 或 HardDelete,以便使用 DeleteRecord API 從線上儲存中軟刪除或實硬刪除記錄。如需 DeleteRecord API 的詳細資訊,請參閱 Amazon SageMaker API 參考中的 DeleteRecord。
使用線上儲存:
-
當您軟刪除 (預設) 時,GetRecord 或 BatchGetRecord 無法再擷取記錄,且除了
RecordIdentifer和EventTime特徵值以外,特徵欄值會設定為null。 -
當您硬刪除時,記錄會從線上儲存中完全移除。
在這兩種情況下,特徵商店都會將已刪除的記錄標記附加至 OfflineStore。刪除的記錄標記是與原始記錄 RecordIdentifer 相同的記錄,但 is_deleted 值設定為 True,EventTime 設定為刪除輸入 EventTime,其他特徵值設定為 null。
請注意,在 DeleteRecord 中指定的 EventTime 應設定晚於相同 RecordIdentifer 的 OnlineStore 記錄中的現有記錄的 EventTime。如果不這樣設定,則不會發生刪除:
-
對於
SoftDelete,現有 (未刪除) 記錄會保留在OnlineStore中,不過刪除記錄標記仍會寫入OfflineStore。 -
HardDelete返回EventTime:400 ValidationException表示刪除操作失敗。不會將刪除記錄標記寫入OfflineStore。
下列範例會使用適用於 Python 的 SDK (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 資料表名稱 。以下指示假設您已使用 Feature Store,使用 Iceberg 資料表格式 iceberg-table-nameDisableGlueTableCreation = False (預設) 透過離線儲存儲存組態來建立特徵群組。如需建立特徵群組的詳細資訊,請參閱開始使用 Amazon SageMaker Feature Store。
若要取得您的 ,請使用 iceberg-table-nameDescribeFeatureGroup API 來取得 DataCatalogConfig。這包含 Glue 資料表的中繼資料,作為 OfflineStore 的資料型錄。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 FROMiceberg-table-nameWHERErecord-id-feature-nameIS IN ( SELECTrecord-id-feature-nameFROMiceberg-table-nameWHERE is_deleted = 'True')軟刪除的記錄仍然可以透過執行歷程在以前的檔案版本中檢視。如需執行時間歷程的相關資訊,請參閱 Athena 使用者指南中的查詢 Iceberg 資料表資料和執行時間歷程。
-
從以前版本的 Iceberg 資料表中刪除記錄以便從
OfflineStore中硬刪除記錄:-
執行
OPTIMIZE指令,根據相關 delete 檔案的大小和數量,將資料檔案重寫成更好的版面配置。如需有關最佳化 Iceberg 資料表和語法的詳細資訊,請參閱 Athena 使用者指南中的最佳化處理 Iceberg 資料表。OPTIMIZEiceberg-table-nameREWRITE DATA USING BIN_PACK -
(可選,只需執行一次) 執行
ALTER TABLE指令以變更 Iceberg 資料表設定值,並根據您的規格設定何時硬刪除以前的檔案版本。這可以透過將值指派給vacuum_min_snapshots_to_keep和vacuum_max_snapshot_age_seconds屬性來完成。如需有關變更 Iceberg 資料表集屬性的詳細資訊,請參閱 Athena 使用者指南中的 ALTER TABLE SET PROPERTIES。如需有關 Iceberg 資料表屬性鍵值對的詳細資訊,請參閱 Athena 使用者指南中的資料表屬性。ALTER TABLEiceberg-table-nameSET 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。如需有關VACUUM與 Athena 和語法的詳細資訊,請參閱VACUUM。VACUUMiceberg-table-name
-
Apache Spark 離線儲存軟刪除和硬刪除範例
使用 Apache Spark 從 OfflineStore 中軟刪除記錄,然後再硬刪除記錄,您可以按照如上 Amazon Athena 離線儲存軟刪除和硬刪除範例 中的相同指示操作,但請使用 Spark 程序。如需程序的完整清單,請參閱 Apache Iceberg 文件中的 Spark 程序
-
從
OfflineStore進行軟刪除:不使用 Athena 中的DELETE指令,而應使用 Apache Spark 中的DELETE FROM指令。 -
從以前版本的 Iceberg 資料表中刪除記錄以便從
OfflineStore中硬刪除記錄:-
變更您的 Iceberg 資料表組態時:請勿使用 Athena 的
ALTER TABLE指令,而應使用expire_snapshots程序。 -
若要從您的 Iceberg 資料表移除不再需要的資料檔案:請勿使用 Athena 中的
VACUUM指令,而應使用remove_orphan_files程序。
-