

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

# 4단계: CSV 파일에서 대상 테이블로 데이터를 업로드하도록 `DSBulk` 설정 구성
<a name="dsbulk-upload-config"></a>

이 섹션에서는 Amazon Keyspaces에 데이터를 업로드하기 위해 DSBulk를 구성하는 데 필요한 단계를 간략하게 설명합니다. 구성 파일을 사용하여 DSBulk를 구성합니다. 구성 파일은 명령줄에서 직접 지정합니다.

1. Amazon Keyspaces로 마이그레이션하기 위한 DSBulk 구성 파일을 생성합니다. 이 예에서는 파일 이름 `dsbulk_keyspaces.conf`를 사용합니다. DSBulk 구성 파일에 다음 설정을 지정합니다.

   1. *`PlainTextAuthProvider`* - `PlainTextAuthProvider` 클래스를 사용하여 인증 제공자를 생성합니다. `ServiceUserName` 및 `ServicePassword`는 [Amazon Keyspaces에 프로그래밍 방식으로 액세스하기 위한 자격 증명 만들기](programmatic.credentials.md)의 단계에 따라 서비스별 자격 증명을 생성할 때 얻은 사용자 이름 및 암호와 일치해야 합니다.

   1. *`local-datacenter`* -의 값을 연결 AWS 리전 중인 `local-datacenter`로 설정합니다. 예를 들어 애플리케이션이 `cassandra.us-east-1.amazonaws.com`에 연결 중인 경우 로컬 데이터 센터를 `us-east-1`로 설정합니다. 사용 가능한 모든 항목은 섹션을 AWS 리전참조하세요[Amazon Keyspaces의 서비스 엔드포인트](programmatic.endpoints.md). 복제본을 피하려면 `slow-replica-avoidance`를 `false`로 설정합니다.

   1. *`SSLEngineFactory`* - SSL/TLS를 구성하려면 `class = DefaultSslEngineFactory`로 클래스를 지정하는 한 줄로 구성 파일에 섹션을 추가하여 `SSLEngineFactory`를 초기화합니다. `cassandra_truststore.jks`의 경로와 이전에 만든 암호를 입력합니다.

   1. *`consistency`* - 일관성 수준을 `LOCAL QUORUM`으로 설정합니다. 다른 쓰기 일관성 수준은 지원되지 않습니다. 자세한 내용은 [지원되는 Apache Cassandra 읽기 및 쓰기 일관성 수준 및 관련 비용](consistency.md) 섹션을 참조하세요.

   1. Java 드라이버에서 풀당 연결 수를 구성할 수 있습니다. 이 예제에서는 `advanced.connection.pool.local.size`를 3으로 설정합니다.

   다음은 전체 샘플 구성 파일입니다.

   ```
   datastax-java-driver {
   basic.contact-points = [ "cassandra.us-east-1.amazonaws.com:9142"]
   advanced.auth-provider {
       class = PlainTextAuthProvider
       username = "ServiceUserName"
       password = "ServicePassword"
   }
   
   basic.load-balancing-policy {
       local-datacenter = "us-east-1"
       slow-replica-avoidance = false           
   }
   
   basic.request {
       consistency = LOCAL_QUORUM
       default-idempotence = true
   }
   advanced.ssl-engine-factory {
       class = DefaultSslEngineFactory
       truststore-path = "./cassandra_truststore.jks"
       truststore-password = "my_password"
       hostname-validation = false
     }
   advanced.connection.pool.local.size = 3
   }
   ```

1. DSBulk `load` 명령의 파라미터를 검토합니다.

   1. *`executor.maxPerSecond`* - load 명령이 초당 동시에 처리하려고 시도하는 최대 행 수입니다. 설정하지 않으면 이 설정이 -1로 비활성화됩니다.

      대상 테이블에 프로비저닝한 WCU 수를 기반으로 `executor.maxPerSecond`를 설정합니다. `load` 명령의 `executor.maxPerSecond`는 제한이 아니라 대상 평균입니다. 즉, 설정한 수치를 초과할 수 있으며 종종 그럴 수도 있습니다. 버스트를 허용하고 데이터 로드 요청을 처리할 수 있는 충분한 용량을 확보하려면 `executor.maxPerSecond`를 테이블 쓰기 용량의 90% 설정합니다.

      ```
      executor.maxPerSecond = WCUs * .90
      ```

      이 자습서에서는 `executor.maxPerSecond`를 5로 설정했습니다.
**참고**  
DSBulk 1.6.0 이상을 사용하는 경우 대신 `dsbulk.engine.maxConcurrentQueries`를 사용할 수 있습니다.

   1. DSBulk `load` 명령에 대해 이러한 추가 파라미터를 구성합니다.
      + *`batch-mode`* - 이 파라미터는 파티션 키별로 작업을 그룹화하도록 시스템에 지시합니다. 핫키 시나리오와 `WriteThrottleEvents` 원인이 발생할 수 있으므로 배치 모드를 비활성화하는 것이 좋습니다.
      + *`driver.advanced.retry-policy-max-retries`* - 실패한 쿼리를 재시도할 횟수를 결정합니다. 설정하지 않은 경우 기본값은 10입니다. 필요에 따라 이 값을 조정할 수 있습니다.
      + *`driver.basic.request.timeout`* - 시스템에서 쿼리가 반환되기를 기다리는 시간(분)입니다. 설정하지 않은 경우 기본값은 "5분"입니다. 필요에 따라 이 값을 조정할 수 있습니다.