在 Amazon Personalize 中创建数据集导出任务 - Amazon Personalize

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

在 Amazon Personalize 中创建数据集导出任务

您可以使用 Amazon Personalize 控制台创建数据集导出任务, AWS Command Line Interface (AWS CLI),或 AWS SDKs.

创建数据集导出作业(控制台)

将数据导入数据集并创建输出 Amazon S3 存储桶后,您可以将数据导出到存储桶进行分析。要使用 Amazon Personalize 控制台导出数据集,您需要创建数据集导出作业。有关创建 Amazon S3 存储桶的信息,请参阅《Amazon Simple Storage Service 用户指南》中的创建存储桶

在导出数据集之前,确保您的 Amazon Personalize 服务角色可以访问和写入您的输出 Amazon S3 存储桶。请参阅 数据集导出作业权限要求

创建数据集导出作业(控制台)
  1. https://console.aws.amazon.com/personalize/家中打开 Amazon Personalize 控制台。

  2. 在导航窗格中,选择数据集组

  3. 数据集组页面,选择您的数据集组。

  4. 在导航窗格中,选择数据集

  5. 选择要导出到 Amazon S3 存储桶的数据集。

  6. 数据集导出作业中,选择创建数据集导出作业

  7. 数据集导出作业详细信息中,对于数据集导出作业名称,输入导出作业的名称。

  8. 对于IAM服务角色,请选择您在中创建的 Amazon Personalize 服务角色为 Amazon Personalize 创建IAM角色

  9. 对于 Amazon S3 数据输出路径,输入目标 Amazon S3 存储桶。使用以下语法:

    s3://amzn-s3-demo-bucket/<folder path>

  10. 如果你正在使用 AWS KMS 对于加密,对于KMS密钥 ARN,请输入 Amazon 资源名称 (ARN) AWS KMS 钥匙。

  11. 对于导出数据类型,根据您最初导入数据的方式,选择要导出的数据类型。

    • 选择批量,仅导出使用数据集导入作业批量导入的数据。

    • 选择增量,仅导出您使用控制台或者 PutEventsPutUsersPutItems 操作单独导入的数据。

    • 选择两者,导出数据集中的所有数据。

  12. 对于标签,可以选择添加任何标签。有关标记 Amazon Personalize 资源的更多信息,请参阅为 Amazon Personalize 资源添加标签

  13. 选择创建数据集导出作业

    数据集概述页面的数据集导出作业中,作业以导出作业状态列出。当状态为时,数据集导出任务已完成ACTIVE。然后,您可以从输出 Amazon S3 存储桶中下载数据。有关从 Amazon S3 存储桶下载对象的信息,请参阅《Amazon Simple Storage Service 用户指南》中的下载对象

创建数据集导出任务 (AWS CLI)

将数据导入数据集并创建输出 Amazon S3 存储桶后,您可以将数据集导出到存储桶进行分析。要使用导出数据集 AWS CLI,使用创建数据集导出任务 create-dataset-export-job AWS CLI 命令。有关创建 Amazon S3 存储桶的信息,请参阅《Amazon Simple Storage Service 用户指南》中的创建存储桶

在导出数据集之前,确保 Amazon Personalize 服务角色可以访问和写入您的输出 Amazon S3 存储桶。请参阅 数据集导出作业权限要求

以下是示例 create-dataset-export-job AWS CLI 命令。为任务命名,dataset arn替换为要导出的数据集的亚马逊资源名称 (ARN),然后替换role ARN为您在中创建的 Amazon Personalize 服务角色的名称为 Amazon Personalize 创建IAM角色。ARN在s3DataDestination,对于kmsKeyArn,可以选择ARN为您提供 AWS KMS 密钥,并path提供您的输出 Amazon S3 存储桶的路径。

对于 ingestion-mode,通过以下选项指定要导出的数据:

  • 指定 BULK,仅导出使用数据集导入作业批量导入的数据。

  • 指定仅导PUT出您使用控制台或PutEvents PutUsers、或PutItems操作单独导入的数据。

  • 指定 ALL,导出数据集中的所有数据。

有关更多信息,请参阅 CreateDatasetExportJob

aws personalize create-dataset-export-job \ --job-name job name \ --dataset-arn dataset ARN \ --job-output "{\"s3DataDestination\":{\"kmsKeyArn\":\"kms key ARN\",\"path\":\"s3://amzn-s3-demo-bucket/folder-name/\"}}" \ --role-arn role ARN \ --ingestion-mode PUT

将显示数据集导ARN出作业。

{ "datasetExportJobArn": "arn:aws:personalize:us-west-2:acct-id:dataset-export-job/DatasetExportJobName" }

使用 DescribeDatasetExportJob 操作检查状态。

aws personalize describe-dataset-export-job \ --dataset-export-job-arn dataset export job ARN

创建数据集导出任务 (AWS SDKs)

将数据导入数据集并创建输出 Amazon S3 存储桶后,您可以将数据集导出到存储桶进行分析。要使用导出数据集 AWS SDKs,使用CreateDatasetExportJob操作创建数据集导出任务。有关创建 Amazon S3 存储桶的信息,请参阅《Amazon Simple Storage Service 用户指南》中的创建存储桶

以下代码显示了如何使用SDK适用于 Python (Boto3) 或适用于 Java 2.x 的 2.x 创建数据集导出任务。SDK SDK

在导出数据集之前,确保 Amazon Personalize 服务角色可以访问和写入您的输出 Amazon S3 存储桶。请参阅 数据集导出作业权限要求

SDK for Python (Boto3)

使用以下 create_dataset_export_job,将数据集中的数据导出到 Amazon S3 存储桶。为任务命名,dataset arn替换为要导出的数据集的亚马逊资源名称 (ARN),然后替换role ARN为您在中创建的 Amazon Personalize 服务角色的名称为 Amazon Personalize 创建IAM角色。ARN在s3DataDestination,对于kmsKeyArn,可以选择ARN为您提供 AWS KMS 密钥,并path提供您的输出 Amazon S3 存储桶的路径。

对于 ingestionMode,通过以下选项指定要导出的数据:

  • 指定 BULK,仅导出使用数据集导入作业批量导入的数据。

  • 指定仅导PUT出您使用控制台或PutEvents PutUsers、或PutItems操作单独导入的数据。

  • 指定 ALL,导出数据集中的所有数据。

import boto3 personalize = boto3.client('personalize') response = personalize.create_dataset_export_job( jobName = 'job name', datasetArn = 'dataset ARN', jobOutput = { "s3DataDestination": { "kmsKeyArn": "kms key ARN", "path": "s3://amzn-s3-demo-bucket/folder-name/" } }, roleArn = 'role ARN', ingestionMode = 'PUT' ) dsej_arn = response['datasetExportJobArn'] print ('Dataset Export Job arn: ' + dsej_arn) description = personalize.describe_dataset_export_job( datasetExportJobArn = dsej_arn)['datasetExportJob'] print('Name: ' + description['jobName']) print('ARN: ' + description['datasetExportJobArn']) print('Status: ' + description['status'])
SDK for Java 2.x

使用以下 createDatasetExportJob 方法创建数据集导出作业。将以下内容作为参数传递:a PersonalizeClient、导出任务的名称、要导出的数据集ARN的名称、摄取模式、输出 Amazon S3 存储桶的路径以及您的 ARN AWS KMS 钥匙。

ingestionMode 可以是以下一个选项:

  • 使用 IngestionMode.BULK,仅导出使用数据集导入作业批量导入的数据。

  • 用于IngestionMode.PUT仅导出您使用控制台或PutEvents PutUsers、或PutItems操作单独导入的数据。

  • 使用 IngestionMode.ALL,导出数据集中的所有数据。

public static void createDatasetExportJob(PersonalizeClient personalizeClient, String jobName, String datasetArn, IngestionMode ingestionMode, String roleArn, String s3BucketPath, String kmsKeyArn) { long waitInMilliseconds = 30 * 1000; // 30 seconds String status = null; try { S3DataConfig exportS3DataConfig = S3DataConfig.builder() .path(s3BucketPath) .kmsKeyArn(kmsKeyArn) .build(); DatasetExportJobOutput jobOutput = DatasetExportJobOutput.builder() .s3DataDestination(exportS3DataConfig) .build(); CreateDatasetExportJobRequest createRequest = CreateDatasetExportJobRequest.builder() .jobName(jobName) .datasetArn(datasetArn) .ingestionMode(ingestionMode) .jobOutput(jobOutput) .roleArn(roleArn) .build(); String datasetExportJobArn = personalizeClient.createDatasetExportJob(createRequest).datasetExportJobArn(); DescribeDatasetExportJobRequest describeDatasetExportJobRequest = DescribeDatasetExportJobRequest.builder() .datasetExportJobArn(datasetExportJobArn) .build(); long maxTime = Instant.now().getEpochSecond() + 3 * 60 * 60; while (Instant.now().getEpochSecond() < maxTime) { DatasetExportJob datasetExportJob = personalizeClient.describeDatasetExportJob(describeDatasetExportJobRequest) .datasetExportJob(); status = datasetExportJob.status(); System.out.println("Export job status: " + status); if (status.equals("ACTIVE") || status.equals("CREATE FAILED")) { break; } try { Thread.sleep(waitInMilliseconds); } catch (InterruptedException e) { System.out.println(e.getMessage()); } } } catch (PersonalizeException e) { System.out.println(e.awsErrorDetails().errorMessage()); } }