2

我正在尝试将 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 有什么问题(它有数千行长),所以我不知道它是一般错误,还是特定行有问题?

4

2 回答 2

2

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

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

于 2019-10-18T17:32:17.460 回答
0

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

df.column_name = df.column_name.astype(pd.Int32Dtype())
于 2021-11-22T14:05:09.193 回答