使用資料集匯入工作匯入大量記錄 - Amazon Personalize

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用資料集匯入工作匯入大量記錄

格式化輸入資料後 (請參閱資料格式指南),將其上傳到 Amazon Simple Storage Service (Amazon S3) 儲存貯體 (請參閱上傳到 Amazon S3 存儲桶),然後透過建立資料集匯入任務完成建立資料集和結構描述將大量記錄匯入資料集。

資料集匯入任務是一種大量匯入工具,可將 Amazon S3 儲存貯體中的資料填入資料集。您可以使用 Amazon Personalize 主控台 AWS Command Line Interface (AWS CLI) 或 AWS 開發套件建立資料集匯入任務。

如果您先前已為資料集建立資料集匯入工作,您可以使用新的資料集匯入工作來新增或取代現有的大量資料。如需更多資訊,請參閱更新現有的大量資料

匯入模式

如果您已經為資料集建立匯入任務,則可以設定 Amazon Personalize 新增記錄的方式。若要這麼做,請指定資料集匯入工作的匯入模式。如果您尚未匯入大量記錄,則無法在主控台中使用 [匯入模式] 欄位,而且您只能FULLCreateDatasetImportJob API 作業中指定。預設為完全取代。

  • 若要覆寫資料集中所有現有的大量資料,請選擇 Amazon Personalize 主控台中的「取代現有資料」,或FULLCreateDatasetImportJob API 作業中指定。這不會取代您個別匯入的資料,包括即時記錄的事件。

  • 若要將記錄附加到資料集中的現有資料,請選擇「新增至現有資料」或INCREMENTALCreateDatasetImportJob API 作業中指定。Amazon Personalize 化將任何記錄替換為新的 ID 相同的 ID。

    注意

    若要透過資料集匯入工作將資料附加至 Item 互動資料集或動作互動資料集,您必須至少有 1000 個新項目互動或動作互動記錄。

匯入大量記錄 (主控台)

重要

根據預設,資料集匯入工作會取代您大量匯入之資料集中的任何現有資料。如果您已匯入大量資料,則可以透過變更工作的匯入模式來附加資料。

若要使用 Amazon Personalize 主控台將大量記錄匯入資料集,請使用名稱、IAM 服務角色和資料位置建立資料集匯入任務。

如果您剛在中建立資料集建立資料集和結構描述,請跳至步驟 5。

若要匯入大量記錄 (主控台)
  1. https://console.aws.amazon.com/personalize/home 打開 Amazon Personalize 化控制台並登錄到您的帳戶。

  2. 在 [資料集群組] 頁面上,選擇您的資料集群組。資料集群組概觀隨即顯示。

  3. 在導覽窗格中,選擇 [資料],然後選擇要匯入大量資料的資料集。

  4. 資料集匯入工作中,選擇 [建立資料集匯入工作]

  5. 如果這是您的第一個資料集匯入工作,請針對資料匯入來源選擇從 S3 匯入資料

  6. 在 [資料集] 匯入工作名稱中,指定匯入工作的名稱。

  7. 如果您已匯入大量資料,請在「匯入」模式中選擇更新資料集的方式。選擇「取代現有資料」或「新增至現有資料」。資料。如果這是資料集的第一個工作,就不會顯示這個選項。如需更多資訊,請參閱更新現有的大量資料

  8. 資料匯入來源中,對於資料位置,指定資料檔案在 Amazon S3 中的存放位置。使用下列語法:

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

    如果 CSV 檔案位於 Amazon S3 儲存貯體的資料夾中,而您想要使用一個資料集匯入任務將多個 CSV 檔案上傳到資料集,則可以指定資料夾的路徑。Amazon Personalize 只會使用資料夾第一層的檔案,不會使用任何子資料夾中的任何資料。在資料夾名稱/後使用下列語法:

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

  9. IAM 角色中,選擇建立新角色或使用現有角色。如果您已完成必要條件,請選擇 [使用現有的服務角色],然後指定您在中建立的角色為 Amazon Personalize 化創建 IAM 角色

  10. 如果您建立了指標歸因,並希望將與此任務相關的指標發佈到 Amazon S3,請在將事件指標發佈到 S3 中選擇此匯入任務的發佈指標

    如果您尚未建立指標,而且想要發佈此工作的指標,請選擇「建立量度歸因」,在不同的索引標籤上建立新指標歸因。建立指標歸因後,您可以返回此畫面並完成匯入工作的建立。

    如需測量結果屬性的詳細資訊,請參閱衡量建議的影響

  11. 對於「標籤」,選擇性地新增任何標籤 如需標記 Amazon Personalize 資源的詳細資訊,請參閱標記 Amazon Personalize 化資

  12. 選擇 Start import (開始匯入)。開始執行資料匯入任務並顯示 Dashboard Overview (儀表板概觀) 頁面。當狀態顯示為 ACTIVE 時,即表示資料集匯入完成。將資料匯入 Amazon Personalize 資料集之後,您可以對其進行分析、匯出到 Amazon S3 儲存貯體、更新資料集或刪除資料集來刪除資料集。如需詳細資訊,請參閱 管理資料集中的訓練資料

    匯入資料之後,您就可以建立解決方案了。如需詳細資訊,請參閱 建立解決方案和解決方案版本

匯入大量記錄 (AWS CLI)

重要

根據預設,資料集匯入工作會取代您大量匯入之資料集中的任何現有資料。如果您已匯入大量資料,則可以透過變更工作的匯入模式來附加資料。

若要使用匯入大量記錄 AWS CLI,請使用CreateDatasetImportJob指令建立資料集匯入工作。如果您先前已為資料集建立資料集匯入工作,您可以使用 import mode 參數來指定新增資料的方式。如需更新現有大量資料的詳細資訊,請參閱更新現有的大量資料

匯入大量記錄 (AWS CLI)
  1. 執行以下命令來建立資料集匯入任務。為您的資料集提供 Amazon 資源名稱 (ARN),並指定存放訓練資料的 Amazon S3 儲存貯體的路徑。對路徑使用下列語法:

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

    如果 CSV 檔案位於 Amazon S3 儲存貯體的資料夾中,而您想要使用一個資料集匯入任務將多個 CSV 檔案上傳到資料集,則可以指定資料夾的路徑。Amazon Personalize 只會使用資料夾第一層的檔案,不會使用任何子資料夾中的任何資料。在資料夾名稱/後使用下列語法:

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

    提供您在為 Amazon Personalize 化創建 IAM 角色其中建立的 AWS Identity and Access Management (IAM) 角色 Amazon 資源名稱 (ARN)。預設的 import-modeFULL。如需更多資訊,請參閱更新現有的大量資料。如需該操作的詳細資訊,請參閱 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 \ --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

    這時會顯示資料集匯入任務的屬性,包括其狀態。最初,顯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" }, "importMode": "FULL", "roleArn": "role-arn", "status": "CREATE PENDING", "creationDateTime": 1542392161.837, "lastUpdatedDateTime": 1542393013.377 } }

    當狀態顯示為 ACTIVE 時,即表示資料集匯入完成。將資料匯入 Amazon Personalize 資料集之後,您可以對其進行分析、匯出到 Amazon S3 儲存貯體、更新資料集或刪除資料集來刪除資料集。如需詳細資訊,請參閱 管理資料集中的訓練資料

    將資料匯入資料集群組中的相關資料集之後,您就可以建立解決方案版本 (訓練過的模型)。如需詳細資訊,請參閱 建立解決方案和解決方案版本

匯入大量記錄 (AWS SDK)

重要

根據預設,資料集匯入工作會取代您大量匯入之資料集中的任何現有資料。如果您已匯入大量資料,則可以透過變更工作的匯入模式來附加資料。

若要匯入資料,請使用作業建立資料集匯入工CreateDatasetImportJob作。下列程式碼會示範如何建立資料集匯入工作。

指定任務名稱、設datasetArn定資料集的 Amazon 資源名稱 (ARN),然後dataLocation設定存放訓練資料的 Amazon S3 儲存貯體的路徑。對路徑使用下列語法:

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

如果 CSV 檔案位於 Amazon S3 儲存貯體的資料夾中,而您想要使用一個資料集匯入任務將多個 CSV 檔案上傳到資料集,則可以指定資料夾的路徑。Amazon Personalize 只會使用資料夾第一層的檔案,不會使用任何子資料夾中的任何資料。在資料夾名稱/後使用下列語法:

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

對於roleArn,請指定授予 Amazon Personalize 許可以存取 S3 儲存貯體的 AWS Identity and Access Management (IAM) 角色。請參閱為 Amazon Personalize 化創建 IAM 角色。預設的 importModeFULL。這會取代資料集中的所有大量資料。若要附加資料,請將其設定為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://bucket/file.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://<name of your S3 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 儲存貯體、更新資料集或刪除資料集來刪除資料集。如需詳細資訊,請參閱 管理資料集中的訓練資料

將資料匯入資料集群組中的相關資料集之後,您就可以建立解決方案版本 (訓練過的模型)。如需更多詳細資訊,請參閱 建立解決方案和解決方案版本