使用数据集导入作业导入批量记录 - Amazon Personalize
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

使用数据集导入作业导入批量记录

重要

Amazon Personalize 中的批量导入是对批量数据的完全刷新。数据集中的现有批量数据将被替换。这不包括以增量方式导入的记录。

格式化输入数据后(请参阅格式化输入数据)并将其上传到 Amazon Simple Storage Service (Amazon S3) 存储桶(请参阅上传至 Amazon S3 存储桶),请通过创建数据集导入作业来导入批量记录。

A数据集导入作业是一个批量导入工具,用 S3 存储桶中的数据填充您的数据填充您的数据集。您可以使用 Amazon Personalize 控制台创建数据集导入任务并导入批量记录,Amazon Command Line Interface(Amazon CLI),或Amazon开发工具包。

导入批量记录(控制台)

要使用控制台将批量记录导入 Amazon Personalize Producation 中的数据集,请使用名称、IAM 服务角色和数据位置创建数据集导入任务。

导入批处理记录 (控制台)

注意

如果您刚刚在第 2 步:创建数据集和方案,请跳至步骤 5。

  1. 从打开 Amazon Personalize 控制台https://console.aws.amazon.com/personalize/home并登录您的账户。

  2. 在存储库的数据集组页面上,选择您的数据集组。数据集组控制面板屏幕上随即显示。

  3. 上传数据集部分中,对于要导入的数据集类型,选择导入.. 这些区域有:配置 < dataset type >页面上随即显示。

  4. 如果已创建此类型的数据集,则所有数据集细信息架构详细信息字段已禁用。选择 Next

    如果尚未创建此类型的数据集,请完成数据集细信息架构详细信息字段创建数据集。

  5. In数据集导入作业详情, 用于数据集导入作业名称中,为导入任务指定一个名称。

  6. 对于 IAM service role (IAM 服务角色),请保留默认选择 Enter a custom IAM role ARN (输入自定义 IAM 角色 ARN)

  7. 对于 Custom IAM role ARN (自定义 IAM 角色 ARN),指定您在为 Amazon Personalize 创建 IAM 角色中创建的角色。

  8. 适用于数据位置,指定 Amazon S3 中存储数据文件的位置。使用下面的语法:

    s3://<name of your S3 bucket>/<folder path>/<CSV filename>

    注意

    如果 CSV 文件位于 S3 存储桶中的文件夹中,并且您希望将多个 CSV 文件上传到具有一个数据集导入作业的数据集,请使用此语法不带 CSV 文件名。

  9. 选择 Finish。数据导入作业开始,并显示 Dashboard Overview (控制面板概览) 页。

    当状态显示为 ACTIVE 时,数据集导入完成。您现在可以使用指定的数据集来训练模型。

    将您的数据导入到数据集组中的相关数据集后,通过训练模型来创建解决方案版本。有关更多信息,请参阅创建解决方案

导入批量记录 (Amazon CLI)

要使用Amazon CLI创建数据集导入作业。CreateDatasetImportJob命令。

导入批量记录 (Amazon CLI)

  1. 通过运行以下命令来创建数据集导入作业。从提供 Amazon 资源名称 (ARN)第 2 步:创建数据集和方案和 S3 存储桶名称。提供Amazon Identity and Access Management(IAM) 角色,您在中创建的 Amazon 资源名称 (ARN)为 Amazon Personalize 创建 IAM 角色。有关操作的更多信息,请参阅CreateDatasetImportJob

    aws personalize create-dataset-import-job \ --job-name dataset import job name \ --dataset-arn dataset arn \ --data-source dataLocation=s3://bucketname/filename \ --role-arn roleArn

    此将显示数据集导入作业 ARN,如以下示例所示。

    { "datasetImportJobArn": "arn:aws:personalize:us-west-2:acct-id:dataset-import-job/DatasetImportJobName" }
  2. 通过使用 describe-dataset-import-job 命令来检查状态。提供上一个步骤中返回的数据集导入作业 ARN。有关操作的更多信息,请参阅DescribeDatasetImportJob

    aws personalize describe-dataset-import-job \ --dataset-import-job-arn dataset import job arn

    这将显示数据集导入作业的属性,包括其状态。开始时,status显示为 “创建挂起”。

    { "datasetImportJob": { "jobName": "Dataset Import job name", "datasetImportJobArn": "arn:aws:personalize:us-west-2:acct-id:dataset-import-job/DatasetImportJobArn", "datasetArn": "arn:aws:personalize:us-west-2:acct-id:dataset/DatasetGroupName/INTERACTIONS", "dataSource": { "dataLocation": "s3://<bucketname>/ratings.csv" }, "roleArn": "role-arn", "status": "CREATE PENDING", "creationDateTime": 1542392161.837, "lastUpdatedDateTime": 1542393013.377 } }

    当状态显示为 ACTIVE 时,数据集导入完成。您现在可以使用指定的数据集来训练模型。

    将您的数据导入到数据集组中的相关数据集后,通过训练模型来创建解决方案版本。有关更多信息,请参阅创建解决方案

导入批量记录 (Amazon开发工具包)

要将数据添加到数据集,请使用CreateDatasetImportJoboperation. 下面的代码显示了如何使用适用于 Python 的开发工具包 (Bto3) 或适用于 Java 2.x 的开发工具包创建数据集导入作业。

SDK for Python (Boto3)

指定datasetGroupArn并将dataLocation添加到您存储训练数据的 Amazon S3 存储桶的路径。

对于roleArn,请指定Amazon Identity and Access Management(IAM) 角色,用于授予 Amazon Personalize 访问 S3 存储桶的权限。请参阅 为 Amazon Personalize 创建 IAM 角色

import boto3 personalize = boto3.client('personalize') response = personalize.create_dataset_import_job( jobName = 'YourImportJob', datasetArn = 'dataset_arn', dataSource = {'dataLocation':'s3://bucket/file.csv'}, roleArn = 'role_arn' ) dsij_arn = response['datasetImportJobArn'] print ('Dataset Import Job arn: ' + dsij_arn) description = personalize.describe_dataset_import_job( datasetImportJobArn = dsij_arn)['datasetImportJob'] print('Name: ' + description['jobName']) print('ARN: ' + description['datasetImportJobArn']) print('Status: ' + description['status'])
SDK for Java 2.x

请使用以下createPersonalizeDatasetImportJob方法创建数据集导入作业。传递以下作为参数:Amazon Personalize 服务客户端、数据集组的 ARN(Amazon 资源名称)、作业名称、数据集 ARN、bucket-name/file.csv存储培训数据的位置,以及与服务相关的角色的 ARN(请参阅为 Amazon Personalize 创建 IAM 角色)。

如果 CSV 文件位于 Amazon S3 存储桶中的文件夹中,则可以在一个数据集导入任务中将多个 CSV 文件上传到数据集。对于存储桶路径,指定bucket-name/folder-name/而不是文件名。

public static String createPersonalizeDatasetImportJob(PersonalizeClient personalizeClient, String jobName, String datasetArn, String s3BucketPath, String roleArn) { long waitInMilliseconds = 60 * 1000; String status; String datasetImportJobArn; try { DataSource importDataSource = DataSource.builder() .dataLocation(s3BucketPath) .build(); CreateDatasetImportJobRequest createDatasetImportJobRequest = CreateDatasetImportJobRequest.builder() .datasetArn(datasetArn) .dataSource(importDataSource) .jobName(jobName) .roleArn(roleArn) .build(); datasetImportJobArn = personalizeClient.createDatasetImportJob(createDatasetImportJobRequest) .datasetImportJobArn(); DescribeDatasetImportJobRequest describeDatasetImportJobRequest = DescribeDatasetImportJobRequest.builder() .datasetImportJobArn(datasetImportJobArn) .build(); long maxTime = Instant.now().getEpochSecond() + 3 * 60 * 60; while (Instant.now().getEpochSecond() < maxTime) { DatasetImportJob datasetImportJob = personalizeClient .describeDatasetImportJob(describeDatasetImportJobRequest) .datasetImportJob(); status = datasetImportJob.status(); System.out.println("Dataset import job status: " + status); if (status.equals("ACTIVE") || status.equals("CREATE FAILED")) { break; } try { Thread.sleep(waitInMilliseconds); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } return datasetImportJobArn; } catch (PersonalizeException e) { System.out.println(e.awsErrorDetails().errorMessage()); } return ""; }

来自DescribeDatasetImportJob操作包含操作的状态。

您必须等待,直到状态更改为 ACTIVE,然后才能使用数据训练模型。

Amazon Personalize 提供用于管理数据集、数据集组和数据集导入作业的操作。例如,您可以使用ListDatasets以列出数据集组中的数据集,DeleteDataset以删除数据集。

将您的数据导入到数据集组中的相关数据集后,通过训练模型来创建解决方案版本。有关更多信息,请参阅创建解决方案