データセットのインポートジョブを使用して Amazon Personalize にバルクデータをインポートする - Amazon Personalize

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

データセットのインポートジョブを使用して Amazon Personalize にバルクデータをインポートする

入力データをフォーマットし (「」を参照Amazon Personalize のトレーニングデータの準備)、 を完了するとスキーマとデータセットの作成、データセットのインポートジョブを使用してバルクデータをインポートする準備が整います。データセットのインポートジョブは、Amazon S3 からのデータをデータセットに入力する一括インポートツールです。

Amazon S3 からデータをインポートするには、CSVファイルが Amazon S3 バケットに存在し、Amazon Personalize に Amazon S3 リソースへのアクセス許可を付与する必要があります。

Amazon Personalize コンソールを使用してデータセットのインポートジョブを作成できます。 AWS Command Line Interface (AWS CLI)、または AWS SDKs。以前にデータセットのデータセットインポートジョブを作成した場合は、新しいデータセットインポートジョブを使用して、既存のバルクデータに追加または置き換えることができます。詳細については、「トレーニング後のデータセットのデータの更新」を参照してください。

データをインポートしたら、ドメインレコメンダー (ドメインデータセットグループの場合) またはカスタムリソース (カスタムデータセットグループの場合) を作成して、データに基づいてモデルをトレーニングする準備が整います。これらのリソースを使用して、レコメンデーションを生成します。詳細については、Amazon Personalize のドメインレコメンダー または Amazon Personalize モデルのトレーニングとデプロイのためのカスタムリソース を参照してください。

インポートモード

データセットのインポートジョブを既に作成している場合は、Amazon Personalize が新しいレコードを追加する方法を設定できます。これを行うには、データセットのインポートジョブのインポートモードを指定します。一括レコードをインポートしていない場合、インポートモードフィールドはコンソールでは使用できず、 CreateDatasetImportJobAPIオペレーションFULLでのみ指定できます。デフォルトは完全な置き換えモードです。

  • データセット内のすべての既存のバルクデータを上書きするには、Amazon Personalize コンソールで既存のデータを置き換えるか、 CreateDatasetImportJobAPIオペレーションFULLで を指定します。これにより、リアルタイムで記録されたイベントを含め、個別にインポートしたデータが置き換えられることはありません。

  • レコードをデータセット内の既存のデータに追加するには、既存のデータに追加するか、 CreateDatasetImportJob API オペレーションINCREMENTALで を指定します。Amazon Personalize は、同じ ID のレコードをすべて新しいレコードに置き換えます。

    注記

    データセットのインポートジョブでアイテムインタラクションデータセットまたはアクションインタラクションデータセットにデータを追加するには、少なくとも 1,000 件の新しいインタラクションレコードまたはアクションインタラクションレコードが必要です。

データセットのインポートジョブの作成 (コンソール)

重要

デフォルトでは、データセットのインポートジョブは、一括でインポートしたデータセット内の既存のデータを置き換えます。バルクデータを既にインポートしている場合は、ジョブのインポートモード を変更してデータを追加できます。

Amazon Personalize コンソールを使用してバルクレコードをデータセットにインポートするには、名前、IAMサービスロール、データの場所を使用してデータセットのインポートジョブを作成します。

スキーマとデータセットの作成 でデータセットを作成したばかりの場合は、ステップ 5 に進んでください。

バルクレコードをインポートするには (コンソール)
  1. https://console.aws.amazon.com/personalize/自宅の Amazon Personalize コンソールを開き、アカウントにサインインします。

  2. [データセットグループ] のページで、データセットグループを選択します。データセットグループの 概要 が表示されます。

  3. ナビゲーションペインで、[データセット] を選択し、バルクデータのインポート先となるデータセットを選択します。

  4. [データセットインポートジョブ][データセットインポートジョブの作成] を選択します。

  5. これが最初のデータセットのインポートジョブである場合は、「データインポートソース」でS3 からデータをインポートする」を選択します。

  6. [データセットのインポートジョブ名] で、インポートジョブの名前を指定します。

  7. バルクデータを既にインポートしている場合は、インポートモード でデータセットを更新する方法を選択します。[既存のデータを置換] または [既存のデータに追加] を選択します。このオプションは、データセットの最初のジョブである場合は表示されません。詳細については、「トレーニング後のデータセットのデータの更新」を参照してください。

  8. 「データインポートソース」の「データロケーション」で、データファイルが Amazon S3 に保存されている場所を指定します。次の構文を使用します。

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

    CSV ファイルが Amazon S3 バケット内のフォルダにあり、1 つのデータセットのインポートジョブで複数のCSVファイルをデータセットにアップロードする場合は、フォルダへのパスを指定できます。Amazon Personalize はフォルダの最初のレベルにあるファイルのみを使用し、サブフォルダのデータは一切使用しません。フォルダ名の後に / を付けて次の構文を使用します。

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

  9. IAM ロール で、新しいロールを作成するか、既存のロールを使用するかを選択します。前提条件を満たしたら、[既存のサービスロールを使用する] を選択し、Amazon Personalize の IAMロールの作成 で作成したロールを指定します。

  10. メトリクス属性を作成し、このジョブに関連するメトリクスをAmazon S3 に公開する場合は、[イベントメトリクスを S3 に公開][このインポートジョブのメトリクスを公開] を選択します。

    メトリクスがまだ作成されておらず、このジョブのメトリクスを公開したい場合は、[メトリクス属性の作成] を選択して別のタブに新しいメトリクスを作成します。メトリクス属性を作成したら、この画面に戻ってインポートジョブの作成を完了できます。

    メトリクス属性の詳細については、「Amazon Personalize レコメンデーションの影響の測定」を参照してください。

  11. [タグ] には、オプションで任意のタグを追加します。Amazon Personalize リソースのタグ付けについての詳細は、「Amazon Personalize リソースのタグ付け」を参照してください。

  12. [Start import (インポートの開始)] を選択します。データインポートジョブが開始され、[Dashboard Overview (ダッシュボード概要)] ページが表示されます。ステータスが と表示されると、データセットのインポートは完了ですACTIVE。Amazon Personalize データセットにデータをインポートしたら、分析、Amazon Amazon S3バケットへのエクスポート更新、またはデータセットの削除によって削除できます。

    データをインポートしたら、ドメインレコメンダー (ドメインデータセットグループの場合) またはカスタムリソース (カスタムデータセットグループの場合) を作成して、データに基づいてモデルをトレーニングする準備が整います。これらのリソースを使用して、レコメンデーションを生成します。詳細については、Amazon Personalize のドメインレコメンダー または Amazon Personalize モデルのトレーニングとデプロイのためのカスタムリソース を参照してください。

データセットのインポートジョブの作成 (AWS CLI)

重要

デフォルトでは、データセットのインポートジョブは、一括でインポートしたデータセット内の既存のデータを置き換えます。バルクデータを既にインポートしている場合は、ジョブのインポートモード を変更してデータを追加できます。

を使用してバルクレコードをインポートするには AWS CLI、 CreateDatasetImportJob コマンドを使用してデータセットのインポートジョブを作成します。以前にデータセットのデータセットインポートジョブを作成したことがある場合は、インポートモードパラメーターを使用して新しいデータの追加方法を指定できます。既存のバルクデータの更新の詳細については、「トレーニング後のデータセットのデータの更新」を参照してください。

一括レコードのインポート (AWS CLI)
  1. 次のコマンドを実行してデータセットのインポートジョブを作成します。データセットの Amazon リソースネーム (ARN) を指定し、トレーニングデータを保存した Amazon S3 バケットへのパスを指定します。パスには次の構文を使用します。

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

    CSV ファイルが Amazon S3 バケット内のフォルダにあり、1 つのデータセットのインポートジョブで複数のCSVファイルをデータセットにアップロードする場合は、フォルダへのパスを指定できます。Amazon Personalize はフォルダの最初のレベルにあるファイルのみを使用し、サブフォルダのデータは一切使用しません。フォルダ名の後に / を付けて次の構文を使用します。

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

    を指定する AWS Identity and Access Management (IAM) ロール で作成した Amazon リソースネーム (ARN)Amazon Personalize の IAMロールの作成import-mode のデフォルト値は FULL です。詳細については、「トレーニング後のデータセットのデータの更新」を参照してください。オペレーションの詳細については、「CreateDatasetImportJob」を参照してください。

    aws personalize create-dataset-import-job \ --job-name dataset import job name \ --dataset-arn dataset arn \ --data-source dataLocation=s3://amzn-s3-demo-bucket/filename \ --role-arn roleArn \ --import-mode FULL

    次の例に示すように、データセットのインポートジョブ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

    データセットのインポートジョブのプロパティとそのステータスが表示されます。最初は、 は CREATE とstatus表示されますPENDING。

    { "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://amzn-s3-demo-bucket/ratings.csv" }, "importMode": "FULL", "roleArn": "role-arn", "status": "CREATE PENDING", "creationDateTime": 1542392161.837, "lastUpdatedDateTime": 1542393013.377 } }

    ステータスが と表示されると、データセットのインポートは完了ですACTIVE。Amazon Personalize データセットにデータをインポートした後、分析、Amazon Amazon S3バケットへのエクスポート更新、またはデータセットの削除によって削除できます。

    データをインポートしたら、ドメインレコメンダー (ドメインデータセットグループの場合) またはカスタムリソース (カスタムデータセットグループの場合) を作成して、データに基づいてモデルをトレーニングする準備が整います。これらのリソースを使用して、レコメンデーションを生成します。詳細については、Amazon Personalize のドメインレコメンダー または Amazon Personalize モデルのトレーニングとデプロイのためのカスタムリソース を参照してください。

データセットのインポートジョブの作成 (AWS SDKs)

重要

デフォルトでは、データセットのインポートジョブは、一括でインポートしたデータセット内の既存のデータを置き換えます。バルクデータを既にインポートしている場合は、ジョブのインポートモード を変更してデータを追加できます。

データをインポートするには、CreateDatasetImportJob オペレーションを使用してデータセットのインポートジョブを作成します。次のコードは、データセットのインポートジョブを作成する方法を示しています。

ジョブ名を指定し、データセットの datasetArn Amazon リソースネーム (ARN) を設定し、 dataLocationをトレーニングデータを保存した Amazon S3 バケットへのパスに設定します。パスには次の構文を使用します。

s3:/amzn-s3-demo-bucket/<folder path>/<CSV filename>.csv

CSV ファイルが Amazon S3 バケット内のフォルダにあり、1 つのデータセットのインポートジョブで複数のCSVファイルをデータセットにアップロードする場合は、フォルダへのパスを指定できます。Amazon Personalize はフォルダの最初のレベルにあるファイルのみを使用し、サブフォルダのデータは一切使用しません。フォルダ名の後に / を付けて次の構文を使用します。

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

にはroleArn、 を指定します。 AWS Identity and Access Management S3 バケットにアクセスするためのアクセス許可を Amazon Personalize に付与する (IAM) ロール。「Amazon Personalize の IAMロールの作成」を参照してください。importMode のデフォルト値は FULL です。これにより、データセット内のすべてのバルクデータが置き換えられます。データを追加するには、 に設定しますINCREMENTAL。既存のバルクデータの更新の詳細については、「トレーニング後のデータセットのデータの更新」を参照してください。

SDK for Python (Boto3)
import boto3 personalize = boto3.client('personalize') response = personalize.create_dataset_import_job( jobName = 'YourImportJob', datasetArn = 'dataset_arn', dataSource = {'dataLocation':'s3://amzn-s3-demo-bucket/filename.csv'}, roleArn = 'role_arn', importMode = 'FULL' ) 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
public static String createPersonalizeDatasetImportJob(PersonalizeClient personalizeClient, String jobName, String datasetArn, String s3BucketPath, String roleArn, ImportMode importMode) { 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) .importMode(importMode) .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 ""; }
SDK for JavaScript v3
// Get service clients and commands using ES6 syntax. import { CreateDatasetImportJobCommand, PersonalizeClient } from "@aws-sdk/client-personalize"; // create personalizeClient const personalizeClient = new PersonalizeClient({ region: "REGION" }); // Set the dataset import job parameters. export const datasetImportJobParam = { datasetArn: 'DATASET_ARN', /* required */ dataSource: { dataLocation: 's3://amzn-s3-demo-bucket/<folderName>/<CSVfilename>.csv' /* required */ }, jobName: 'NAME', /* required */ roleArn: 'ROLE_ARN', /* required */ importMode: "FULL" /* optional, default is FULL */ }; export const run = async () => { try { const response = await personalizeClient.send(new CreateDatasetImportJobCommand(datasetImportJobParam)); console.log("Success", response); return response; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

DescribeDatasetImportJob 操作のレスポンスには、操作のステータスが含まれます。

データを使用してモデルをトレーニングACTIVEするには、ステータスが に変わるまで待つ必要があります。

ステータスが と表示されると、データセットのインポートは完了ですACTIVE。Amazon Personalize データセットにデータをインポートしたら、そのデータを分析したりAmazon S3 バケットにエクスポートしたり更新したり、データセットを削除して削除したりできます。

データをインポートしたら、ドメインレコメンダー (ドメインデータセットグループの場合) またはカスタムリソース (カスタムデータセットグループの場合) を作成して、データに基づいてモデルをトレーニングする準備が整います。これらのリソースを使用して、レコメンデーションを生成します。詳細については、Amazon Personalize のドメインレコメンダー または Amazon Personalize モデルのトレーニングとデプロイのためのカスタムリソース を参照してください。