将 CSV 文件导入 Amazon Personalize 时出错

Error when importing CSV file into Amazon Personalize

我正在尝试将 CSV 文件导入 Amazon Personalize

我的架构如下所示:

{
  "type": "record",
  "name": "Items",
  "namespace": "com.amazonaws.personalize.schema",
  "fields": [
      {
          "name": "ITEM_ID",
          "type": "string"
      },
      {
          "name": "AUTHOR",
          "type": "string",
          "categorical": true
      },
      {
          "name": "COUNTRY",
          "type": "string",
          "categorical": true
      },
      {
          "name": "CITY",
          "type": "string",
          "categorical": true
      },
      {
          "name": "STYLES",
          "type": "string",
          "categorical": true
      },
      {
          "name": "CATEGORIES",
          "type": "string",
          "categorical": true
      }
  ],
  "version": "1.0"
}

前几行数据如下所示:

ITEM_ID,AUTHOR,COUNTRY,CITY,STYLES,CATEGORIES
5b4253a7e12434f55875381e,5acd193f48ed4b9b3add5be6,US,city_us_austin,5ad45bc575eb016f3cdb562b|571aa21888a4fd9934f0fd7b|571aa21888a4fd9934f0fd79|5ad45e8c75eb016f3cdb563f|5b4ea35abaa12285687a1f47,593a866a082c26444eab2d3c|5a8e4820fc112d414fbc1be3
5b4253a7e12434f55875381f,5acd193f48ed4b9b3add5be6,US,city_us_jackson,571aa21888a4fd9934f0fd82|57600e419e4959cd069658eb|5ad45c3a75eb016f3cdb5631|571aa21888a4fd9934f0fd7b|57aaa7094a393f531ace43f0|575e6d8e34ca56f742bea1c8|571aa21888a4fd9934f0fd8f,593a866a082c26444eab2d3c|5a8e4820fc112d414fbc1be3

我收到错误

Failed to create a data import job for item dataset.
Input csv has rows that do not conform to the dataset schema. Please ensure all required data fields are present and that they are of the type specified in the schema.

我如何找出 CSV 文件的错误(它有数千行),所以我不知道这是一个普遍的错误,还是特定行的错误?

根据我的经验,只要数据集不超过25万条记录,您仍然可以使用Excel使用数据过滤器和相应的搜索功能来检查数据。如果不止于此,请考虑使用 Notepad++ 和 RegEx。您的问题可能是以下情况之一:

(1) 少了一个逗号。这会使您的数据错位并使其无法被处理。
(2) 缺少 ITEM_ID 值。对于 Items,Personalize 需要 ITEM_ID 和至少一个元数据字段。如果在某个实例中您缺少 ITEM_ID 或具有 ITEM_ID 但没有其他元数据字段值,则可能会出现此错误。
(3) STYLES and/or CATEGORIES 超过 256 个字符。字符串长度可能有限制,但我无法从开发人员指南中得到明确的答案。我猜它有 256 个字符。如果我赌钱,这就是我对你问题的猜测。

这是解决问题的另一种方法,也许对其他情况有用。我遇到了同样的问题,但是在处理具有空值的 int 列时。 Pandas 默认情况下将列转换为浮点数据类型 - 如果您将这些列定义为 intlong,则 AWS Personalize 数据集导入作业将不会接受。长话短说,将这些列转换为 int 即可解决问题:

df.column_name = df.column_name.astype(pd.Int32Dtype())