本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
從特徵群組中刪除記錄
您可以使用 Amazon SageMaker Feature Store API從您的功能群組中刪除記錄。特徵群組是包含機器學習 (ML) 資料的物件,其中資料欄由特徵描述,而您的資料則包含在記錄中。記錄包含與特定記錄識別符相關聯的特徵值。
特徵群組有兩種儲存組態:線上儲存和離線儲存。線上儲存只會保留最新事件時間的記錄,通常用於機器學習 (ML) 推論的即時查詢。離線儲存會保留所有記錄,並做為歷史資料庫,通常用於特徵探索、機器學習 (ML) 訓練和批次推論。
若要取得有關特徵商店概念的更多資訊,請參閱擷取圖。
有兩種方法可以從特徵群組中刪除記錄,並且行為會根據儲存組態而有所不同。在下列主題中,我們將說明如何從線上和離線儲存軟刪除和硬刪除記錄,並提供範例。
從線上儲存刪除記錄
您可以使用DeletionMode
請求參數指定 SoftDelete
(預設) 或 ,以軟式或硬DeleteRecord
API式方式從線上商店刪除記錄HardDelete
。如需 DeleteRecord
的詳細資訊API,請參閱 Amazon SageMaker API 參考DeleteRecord
中的 。
使用線上儲存:
-
當您軟刪除 (預設) 時, GetRecord 或 無法再擷取記錄, BatchGetRecord 且功能欄值設定為
null
,但RecordIdentifer
和EventTime
功能值除外。 -
當您硬刪除時,記錄會從線上儲存中完全移除。
在這兩種情況下,特徵商店都會將已刪除的記錄標記附加至 OfflineStore
。刪除的記錄標記是與原始記錄 RecordIdentifer
相同的記錄,但 is_deleted
值設定為 True
,EventTime
設定為刪除輸入 EventTime
,其他特徵值設定為 null
。
請注意,在 DeleteRecord
中指定的 EventTime
應設定晚於相同 RecordIdentifer
的 OnlineStore
記錄中的現有記錄的 EventTime
。如果不這樣設定,則不會發生刪除:
-
對於
SoftDelete
,現有 (未刪除) 記錄會保留在OnlineStore
中,不過刪除記錄標記仍會寫入OfflineStore
。 -
HardDelete
返回EventTime
:400 ValidationException
表示刪除操作失敗。不會將刪除記錄標記寫入OfflineStore
。
下列範例使用 SDK for 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 資料表名稱
。以下指示假設您已使用 Feature Store,使用 Iceberg 資料表格式 iceberg-table-name
DisableGlueTableCreation = False
(預設) 透過離線儲存儲存組態來建立特徵群組。如需建立特徵群組的詳細資訊,請參閱開始使用 Amazon SageMaker Feature Store。
若要取得您的
,請使用 iceberg-table-name
DescribeFeatureGroup
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 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
指令,根據相關 delete 檔案的大小和數量,將資料檔案重寫成更好的版面配置。如需有關最佳化 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
。如需有關VACUUM
與 Athena 和語法的詳細資訊,請參閱VACUUM
。VACUUM
iceberg-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
程序。
-