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

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

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

重要

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

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

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

导入批量记录(控制台)

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

导入批量记录(控制台)

注意

如果你刚在中创建了数据集第 2 步:创建数据集和架构,请跳至步骤 5。

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

  2. 在存储库的数据集组页面中,选择数据集组。数据集组控制面板将显示。

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

  4. 如果您已经创建了此类型的数据集,则所有数据集细节详细架构字段已禁用。选择 Next(下一步)。

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

  5. InDataset import job details,对于数据集导入作业名称中,为导入任务指定一个名称。

  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),并指定用于存储训练数据的 Amazon S3 存储桶的路径。对路径使用以下语法:

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

    提供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. 以下代码显示如何使用 SDK for Python (Boto3) 或适用于 Java 2.x 的开发工具包创建数据集导入作业。

SDK for Python (Boto3)

给出作业名称,设置datasetArn设置数据集的 Amazon 资源名称 (ARN),并将dataLocation指向用于存储训练数据的 Amazon S3 存储桶的路径。对路径使用以下语法:

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

对于roleArn中,指定Amazon Identity and Access Management授予 Amazon Personalize 访问 S3 存储桶的权限的 IAM) 角色。请参阅 创建 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 S3 存储桶路径 (s3://<bucketname>/<file name.csv>) 您存储培训数据的位置以及 Amazon Personalize IAM 服务角色的 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 Personation 提供用于管理数据集、数据集组和数据集导入作业的操作。例如,您可以使用ListDatasets列出数据集组中的数据集,DeleteDataset删除数据集。

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