

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将 Feature Store 与 SDK for Python (Boto3) 结合使用
<a name="feature-store-create-feature-group"></a>

功能组是功能商店的主要资源，其中包含存储在亚马逊 SageMaker 功能商店中的机器学习 (ML) 数据和元数据。 要素组是要素和记录的逻辑分组。特征组的定义由其在线和离线存储的配置以及用于描述记录值的特征定义列表组成。特征定义必须包括记录标识符名称和事件时间名称。有关 Feature Store 概念的更多信息，请参阅 [Feature Store 概念](feature-store-concepts.md)。

使用 Feature Store 之前，您通常会加载数据集、运行转换并设置特征以供摄取。这个过程有很多变化，并且高度依赖于您的数据。以下主题中的示例代码分别参考[功能商店简介](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-featurestore/feature_store_introduction.html)和[使用 Amazon F SageMaker eature Store 进行欺诈检测](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-featurestore/sagemaker_featurestore_fraud_detection_python_sdk.html)示例笔记本。两者都使用 适用于 Python (Boto3) 的 AWS SDK。有关更多特征存放区示例和资源，请参阅 [Amazon SageMaker 功能商店资源](feature-store-resources.md)。

Feature Store 支持以下特征类型：`String`、`Fractional`（IEEE 64 位浮点值）和 `Integral`（Int64 - 64 位有符号整数值）。默认类型设置为 `String`。这意味着，如果数据集内的某列不是 `float` 或 `long` 特征类型，则该列在 Feature Store 中默认设置为 `String`。

您可以使用架构来描述数据的列和数据类型。您将此架构传递到 `FeatureDefinitions`，这是 `FeatureGroup` 的必需参数。您可以使用 SDK for Python (Boto3)，在使用 `load_feature_definitions` 函数时，该 SDK 可以自动检测数据类型。

添加一个具有已存在记录 ID 的新特征记录时的默认行为如下所示。在离线存储中，将附加新记录。在在线存储中，如果新记录的事件时间小于现有事件时间，则不会发生任何事情，但如果新记录的事件时间大于或等于现有事件时间，则该记录将被覆盖。

创建新特征组时，可以选择以下表格式之一：
+ AWS Glue （默认）
+ Apache Iceberg

摄取数据（尤其在流式处理时）可能会导致大量小文件存入离线存储。由于所需的文件操作次数较多，这可能会对查询性能产生负面影响。为避免潜在的性能问题，请在创建新特征组时使用 Apache Iceberg 表格式。使用 Iceberg 可以将分区中的小数据文件压缩成较少的大文件，从而显著加快查询速度。此压缩操作是并发的，不会影响特征组上正在进行的读取和写入操作。如果您在创建新功能组时选择 Iceberg 选项，Amazon SageMaker Feature Store 将使用 Parquet 文件格式创建 Iceberg 表，并将这些表注册到中。 AWS Glue Data Catalog

**重要**  
请注意，对于 Iceberg 表格式的特征组，必须指定 `String` 作为事件时间值。如果指定任何其他类型，则无法成功创建特征组。

在下文中，我们列出了一些可用的 Feature Store 托管资源。

**Topics**
+ [“Feature Store 简介”示例笔记本](feature-store-introduction-notebook.md)
+ [“使用 Feature Store 进行欺诈检测”示例笔记本](feature-store-fraud-detection-notebook.md)
+ [冰山元数据管理](feature-store-iceberg-metadata-management.md)