1

我正在学习aws-pesonalize,而不是这个模式字段

{
 "type": "record",
 "name": "Interactions",
 "namespace": "com.amazonaws.personalize.schema",
 "fields": [
 {
 "name": "USER_ID",
 "type": "string"
 },
 {
 "name": "ITEM_ID",
 "type": "string"
 },
 {
 "name": "TIMESTAMP",
 "type": "long"
 }
 ],
 "version": "1.0"
}

我想删除一些字段并添加新字段,但不知道如何做到这一点。有什么办法可以做到这一点?

4

2 回答 2

0

Personalize 中的模式是不可变的。因此,如果要在现有模式中添加/更改/删除字段,则必须使用使用Apache Avro格式定义的所需模式创建一个新模式。

您可以在创建数据集时或使用CreateSchema API 在 AWS 控制台中创建架构。这是在 Python 中为交互数据集创建模式的示例。

import boto3
import json

personalize = boto3.client('personalize')

interactions_schema = {
    "type": "record",
    "name": "Interactions",
    "namespace": "com.amazonaws.personalize.schema",
    "fields": [
        {
            "name": "ITEM_ID",
            "type": "string"
        },
        {
            "name": "USER_ID",
            "type": "string"
        },
        {
            "name": "EVENT_TYPE",
            "type": "string"
        },
        {
            "name": "TIMESTAMP",
            "type": "long"
        }
    ],
    "version": "1.0"
}


personalize.create_schema(
        name = "your-schema-name-here",
        schema = json.dumps(interactions_schema)
)

请注意,每种数据集类型都有必填字段/列。例如,交互数据集类型的每个模式都必须具有USER_IDITEM_IDTIMESTAMP字段/列。命名字段/列时,约定是使用常量大小写(即用“_”分隔单词的大写字母)用于架构中的字段名称和 CSV 中的列名称。Personalize 会自动将 PutEvents/PutItems/PutUsers API 调用中的驼峰式字段名称映射到架构中对应的常量大小写。例如,eventType自动映射到EVENT_TYPE. 有关详细信息,请参阅有关数据集和模式的文档。在aws-samples/amazon-personalize-samples GitHub 存储库和个性化博客

于 2021-08-26T18:55:38.243 回答
0

来自亚马逊文档,我建议你看一下。

Amazon Personalize可识别三种类型的历史数据集。每种类型都有一个关联的架构,其名称键的值与数据集类型匹配。这三种类型是:

  • 用户 - 此数据集旨在提供有关您的用户的元数据。这可能包括年龄、性别或忠诚会员等信息,这些信息可能是个性化系统中的重要信号。
  • 项目 - 此数据集旨在提供有关您的项目的元数据。这可能包括价格、SKU 类型或可用性等信息。
  • 交互——该数据集旨在提供用户和项目之间的历史交互数据。它还可以提供有关用户浏览上下文的元数据,例如他们的位置或设备(移动设备、平板电脑、台式机等)。

[...]

在将数据集添加到 Amazon Personalize 之前,您必须为该数据集定义一个架构。每种数据集类型都有特定的要求。Amazon Personalize 中的架构以 Avro 格式定义。有关更多信息,请参阅Apache Avro

于 2020-07-10T08:45:10.853 回答