

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 배치 세그먼트 작업으로 사용자 세그먼트 가져오기
<a name="creating-batch-seg-job"></a>

 사용자\$1세분화 레시피를 사용한 경우, 일괄 세그먼트 작업을 생성하여 솔루션 버전으로 사용자 세그먼트를 가져올 수 있습니다. 각 사용자 세그먼트는 각 사용자가 인벤토리의 항목과 상호작용할 확률을 기준으로 내림차순으로 정렬됩니다. 레시피에 따라 입력 데이터는 JSON 형식의 항목 목록([항목-친화도 레시피](item-affinity-recipe.md)) 또는 항목 속성([항목-속성-친화도 레시피](item-attribute-affinity-recipe.md))이어야만 합니다. Personalize 콘솔, AWS Command Line Interface (AWS CLI) 또는 AWS SDKs.

 배치 세그먼트 작업을 생성할 때 입력 및 출력 위치에 S3 경로를 지정합니다. S3는 접두사를 기반으로 합니다. 입력 데이터 위치에 접두사를 제공하는 경우, Personalize는 해당 접두사와 일치하는 모든 파일을 입력 데이터로 사용합니다. 예를 들어, 사용자가 `s3://amzn-s3-demo-bucket/folderName`을 제공하고 버킷에 경로가 `s3://amzn-s3-demo-bucket/folderName_test`인 폴더가 있는 경우, Personalize는 두 폴더의 모든 파일을 입력 데이터로 사용합니다. 특정 폴더 내의 파일만을 입력 데이터로 사용하려면 S3 경로 끝에 접두사 구분 기호를 붙입니다(예: `/`: `s3://amzn-s3-demo-bucket/folderName/`). S3에서 객체를 구성하는 방법에 대한 자세한 내용은 [객체 구성, 나열 및 객체 작업](https://docs.aws.amazon.com/AmazonS3/latest/userguide/organizing-objects.html)을 참조하세요.

**Topics**
+ [배치 세그먼트 작업 생성(콘솔)](#batch-segment-console)
+ [배치 세그먼트 작업 생성(AWS CLI)](#batch-segment-cli)
+ [배치 세그먼트 작업(AWS SDKs) 생성](#batch-segment-sdk)

## 배치 세그먼트 작업 생성(콘솔)
<a name="batch-segment-console"></a>

 [배치 추천을 위한 입력 데이터 준비](batch-data-upload.md) 작업을 완료했으면 배치 세그먼트 작업을 생성할 준비가 된 것입니다. 이 절차에서는 USER\$1SEGEMENTATION 레시피를 사용하여 솔루션과 솔루션 버전(학습된 모델)을 이미 생성한 것으로 가정합니다.

**배치 세그먼트 작업을 생성하려면(콘솔)**

1. [https://console.aws.amazon.com/acm-pca/home](https://console.aws.amazon.com/personalize/home)에서 Personalize 콘솔을 열고 계정에 로그인합니다.

1. **데이터세트 그룹** 페이지에서 데이터세트 그룹을 선택합니다.

1. 탐색 창에서 **배치 세그먼트 작업**을 선택한 다음 **배치 세그먼트 작업 생성**을 선택합니다.

1. **배치 세그먼트 작업 세부 정보**에서 **배치 세그먼트 작업 이름**의 경우, 배치 세그먼트 작업의 이름을 지정합니다.

1. **솔루션**의 경우, 솔루션을 선택한 다음 추천을 생성하는 데 사용하려는 **솔루션 버전 ID**를 선택합니다. USER\$1SEGEMENTATION 레시피를 사용한 경우에만 배치 세그먼트 작업을 생성할 수 있습니다.

1. **사용자 수**의 경우, Personalize가 각 사용자 세그먼트에 대해 생성하는 사용자의 수를 원하는 대로 지정합니다. 기본값은 25입니다. 최대값은 5백만 명입니다.

1.  **입력 소스**의 경우, 입력 파일에 대한 S3 경로를 지정하거나 **S3 찾아보기**를 사용하여 S3 버킷을 선택합니다.

   다음 구문 사용: **s3://amzn-s3-demo-bucket/<folder name>/<input JSON file name>.json**

    입력 데이터는 솔루션에서 사용하는 레시피에 맞는 올바른 형식이어야 합니다. 입력 데이터 예제는 [배치 세그먼트 작업 입력 및 출력 JSON 예제](prepare-input-data-user-segment.md#batch-segment-job-json-examples)단원을 참조하세요.

1. **출력 대상**의 경우, 출력 위치에 대한 경로를 지정하거나 **S3 찾아보기**를 사용하여 S3 버킷을 선택합니다. 출력 데이터에 대한 다른 위치(폴더 또는 다른 S3 버킷)를 사용하는 것이 좋습니다.

    다음 구문 사용: **s3://amzn-s3-demo-bucket/<output folder name>/** 

1. **IAM 역할**의 경우, 다음 중 하나를 선택합니다.
   +  **새 서비스 역할 생성 및 사용**을 선택하고 **서비스 역할 이름**을 입력하여 새 역할을 생성합니다. 또는,
   +  올바른 권한이 있는 역할을 이미 생성한 경우, **기존 서비스 역할 사용**을 선택하고 IAM 역할을 선택합니다.

    사용하는 역할에는 각각 입력 및 출력 S3 버킷에 대한 읽기 및 쓰기 액세스 권한이 있어야 합니다.

1.  **필터 구성** 경우, 원하는 필터를 선택하여 사용자 세그먼트에 필터를 적용할 수 있습니다. 필터가 자리표시자 파라미터를 사용하는 경우, 파라미터 값이 입력 JSON에 포함되어 있는지 확인하세요. 자세한 내용은 [입력 JSON에서 필터 값 제공](filter-batch.md#providing-filter-values) 단원을 참조하십시오.

1. **태그**의 경우, 원하는 태그를 추가할 수 있습니다. Personalize 리소스 태그 지정에 대한 자세한 내용은 [Personalize 리소스에 태그 지정](tagging-resources.md)단원을 참조하세요.

1.  **배치 세그먼트 작업 생성**을 선택합니다. 배치 세그먼트 작업 생성이 시작되고 **배치 세그먼트 작업** 페이지가 나타나고 **배치 세그먼트 작업 세부 정보)** 단원이 표시됩니다.

1.  배치 세그먼트 작업의 상태가 **활성**으로 변경되면 지정된 출력 S3 버킷에서 작업 출력을 찾을 수 있습니다. 출력 파일 이름의 형식은 `input-name.out`이 됩니다.

## 배치 세그먼트 작업 생성(AWS CLI)
<a name="batch-segment-cli"></a>

[배치 추천을 위한 입력 데이터 준비](batch-data-upload.md) 작업을 완료했으면 다음 `create-batch-segment-job`코드를 사용하여 배치 세그먼트 작업을 생성할 준비가 된 것입니다. 작업 이름을 지정하고, `Solution version ARN`을 솔루션 버전의 리소스 이름(ARN)으로 대체하고, `IAM service role ARN`을 설정 중에 Personalize용으로 생성한 IAM 서비스 역할의 ARN으로 대체하세요. 이 역할에는 각각 입력 및 출력 S3 버킷에 대한 읽기 및 쓰기 액세스 권한이 있어야 합니다. `num-results`의 경우, Personalize가 각 입력 데이터 라인에 대해 예측하기를 원하는 사용자의 수를 지정합니다. 기본값은 25입니다. 최대값은 5백만 명입니다. 원하는 대로 `filter-arn`을 제공하여 사용자 세그먼트를 필터링합니다. 필터가 자리표시자 파라미터를 사용하는 경우, 파라미터 값이 입력 JSON에 포함되어 있는지 확인하세요. 자세한 내용은 [배치 추천 및 사용자 세그먼트(사용자 지정 리소스) 필터링](filter-batch.md) 단원을 참조하십시오.

`S3 input path` 및 `S3 output path`를 입력 파일 및 출력 위치에 대한 S3 경로로 대체합니다. 출력 데이터에 대한 다른 위치(폴더 또는 다른 S3 버킷)를 사용하는 것이 좋습니다. 입력 및 출력 위치에는 구문: **s3://amzn-s3-demo-bucket/<folder name>/<input JSON file name>.json**및 **s3://amzn-s3-demo-bucket/<output folder name>/**을 사용합니다.

```
aws personalize create-batch-segment-job \
                --job-name Job name \
                --solution-version-arn Solution version ARN \
                --num-results The number of predicted users \
                --filter-arn Filter ARN \
                --job-input s3DataSource={path=s3://S3 input path} \
                --job-output s3DataDestination={path=s3://S3 output path} \
                --role-arn IAM service role ARN
{
   "batchSegmentJobArn": "arn:aws:personalize:us-west-2:acct-id:batch-segment-job/batchSegmentJobName"
}
```

## 배치 세그먼트 작업(AWS SDKs) 생성
<a name="batch-segment-sdk"></a>

[배치 추천을 위한 입력 데이터 준비](batch-data-upload.md) 작업을 완료했으면 `CreateBatchSegmentJob`작업을 사용하여 배치 세그먼트 작업을 생성할 준비가 된 것입니다. 다음 코드는 배치 세그먼트 작업을 생성하는 방법을 보여줍니다. 작업 이름을 지정하고, 사용할 솔루션 버전의 리소스 이름(ARN)을 지정하고, Personalize IAM 역할의 ARN을 지정하고, 입력 파일 및 출력 위치에 대한 S3 경로를 지정합니다. IAM 서비스 역할에는 각각 입력 및 출력 S3 버킷에 대한 읽기 및 쓰기 액세스 권한이 있어야 합니다.

출력 데이터에 대한 다른 위치(폴더 또는 다른 S3 버킷)를 사용하는 것이 좋습니다. 입력 및 출력 위치에는 구문: **s3://amzn-s3-demo-bucket/<folder name>/<input JSON file name>.json**및 **s3://amzn-s3-demo-bucket/<output folder name>/**을 사용합니다.

 `numResults`의 경우, Personalize가 각 입력 데이터 라인에 대해 예측하기를 원하는 사용자의 수를 지정합니다. 기본값은 25입니다. 최대값은 5백만 명입니다. 원하는 대로 `filterArn`을 제공하여 사용자 세그먼트를 필터링합니다. 필터가 자리표시자 파라미터를 사용하는 경우, 파라미터 값이 입력 JSON에 포함되어 있는지 확인하세요. 자세한 내용은 [배치 추천 및 사용자 세그먼트(사용자 지정 리소스) 필터링](filter-batch.md) 단원을 참조하십시오.

------
#### [ SDK for Python (Boto3) ]

```
import boto3

personalize_rec = boto3.client(service_name='personalize')

personalize_rec.create_batch_segment_job (
    solutionVersionArn = "Solution version ARN",
    jobName = "Job name",
    numResults = 25,
    filterArn = "Filter ARN",
    roleArn = "IAM service role ARN",
    jobInput = 
       {"s3DataSource": {"path": "s3://amzn-s3-demo-bucket/<folder name>/<input JSON file name>.json"}},
    jobOutput = 
       {"s3DataDestination": {"path": "s3://amzn-s3-demo-bucket/<output folder name>/"}}
)
```

------
#### [ SDK for Java 2.x ]

```
public static String createBatchSegmentJob(PersonalizeClient personalizeClient,
                                                        String solutionVersionArn,
                                                        String jobName,
                                                        String filterArn,
                                                        int numResults,
                                                        String s3InputDataSourcePath,
                                                        String s3DataDestinationPath,
                                                        String roleArn,
                                                        String explorationWeight,
                                                        String explorationItemAgeCutOff) {

  long waitInMilliseconds = 60 * 1000;
  String status;
  String batchSegmentJobArn;

  try {
      // Set up data input and output parameters.
      S3DataConfig inputSource = S3DataConfig.builder()
              .path(s3InputDataSourcePath)
              .build();
      S3DataConfig outputDestination = S3DataConfig.builder()
              .path(s3DataDestinationPath)
              .build();

      BatchSegmentJobInput jobInput = BatchSegmentJobInput.builder()
              .s3DataSource(inputSource)
              .build();
      BatchSegmentJobOutput jobOutputLocation = BatchSegmentJobOutput.builder()
              .s3DataDestination(outputDestination)
              .build();


      CreateBatchSegmentJobRequest createBatchSegmentJobRequest = CreateBatchSegmentJobRequest.builder()
              .solutionVersionArn(solutionVersionArn)
              .filterArn(filterArn)
              .jobInput(jobInput)
              .jobOutput(jobOutputLocation)
              .jobName(jobName)
              .numResults(numResults)
              .roleArn(roleArn)
              .build();

      batchSegmentJobArn = personalizeClient.createBatchSegmentJob(createBatchSegmentJobRequest)
              .batchSegmentJobArn();
      DescribeBatchSegmentJobRequest describeBatchSegmentJobRequest = DescribeBatchSegmentJobRequest.builder()
              .batchSegmentJobArn(batchSegmentJobArn)
              .build();

      long maxTime = Instant.now().getEpochSecond() + 3 * 60 * 60;

      // wait until the batch segment job is complete.
      while (Instant.now().getEpochSecond() < maxTime) {

          BatchSegmentJob batchSegmentJob = personalizeClient
                  .describeBatchSegmentJob(describeBatchSegmentJobRequest)
                  .batchSegmentJob();

          status = batchSegmentJob.status();
          System.out.println("batch segment 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 batchSegmentJobArn;

  } catch (PersonalizeException e) {
      System.out.println(e.awsErrorDetails().errorMessage());
  }
  return "";
}
```

------
#### [ SDK for JavaScript v3 ]

```
// Get service clients module and commands using ES6 syntax.
import { CreateBatchSegmentJobCommand } from "@aws-sdk/client-personalize";
import { personalizeClient } from "./libs/personalizeClients.js";

// Or, create the client here.
// const personalizeClient = new PersonalizeClient({ region: "REGION"});

// Set the batch segment job's parameters.

export const createBatchSegmentJobParam = {
  jobName: "NAME",
  jobInput: {
    s3DataSource: {
      path: "INPUT_PATH",
    },
  },
  jobOutput: {
    s3DataDestination: {
      path: "OUTPUT_PATH",
    },
  },
  roleArn: "ROLE_ARN",
  solutionVersionArn: "SOLUTION_VERSION_ARN",
  numResults: 20,
};

export const run = async () => {
  try {
    const response = await personalizeClient.send(
      new CreateBatchSegmentJobCommand(createBatchSegmentJobParam),
    );
    console.log("Success", response);
    return response; // For unit tests.
  } catch (err) {
    console.log("Error", err);
  }
};
run();
```

------

배치 작업을 처리하는 데 시간이 걸릴 수 있습니다. [DescribeBatchSegmentJob](API_DescribeBatchSegmentJob.md)을 호출하고 `batchSegmentJobArn`을 입력 파라미터로 전달하여 작업 상태를 확인할 수 있습니다. 를 호출하여 AWS 환경의 모든 Personalize 배치 세그먼트 작업을 나열할 수도 있습니다[ListBatchSegmentJobs](API_ListBatchSegmentJobs.md).