압축 및 비압축 파일에서 데이터 로드 - Amazon Redshift

압축 및 비압축 파일에서 데이터 로드

압축된 데이터를 로드할 때 각 테이블의 데이터를 여러 파일로 분할하는 것이 좋습니다. 압축되지 않은 구분된 데이터를 로드할 때 COPY 명령은 대규모 병렬 처리(MPP) 및 스캔 범위를 사용하여 Amazon S3 버킷의 대용량 파일에서 데이터를 로드합니다.

여러 압축 파일에서 데이터 로드

압축된 데이터가 있는 경우 각 테이블의 데이터를 여러 파일로 분할하는 것이 좋습니다. COPY 명령은 여러 파일에서 병렬로 데이터를 로드할 수 있습니다. 집합에 공통 접두사 또는 접두사 키를 지정하거나 매니페스트 파일에서 파일을 명시적으로 나열하여 여러 파일을 로드할 수 있습니다.

데이터를 파일로 분할할 때는 파일 수가 클러스터에 있는 조각 수의 배수가 되도록 하십시오. 이렇게 하면 Amazon Redshift가 데이터를 슬라이스 간에 균일하게 나눌 수 있습니다. 노드당 조각 수는 클러스터의 노드 크기에 따라 달라집니다. 예를 들어 각각의 dc2.large 컴퓨팅 노드에는 2개의 조각이 있고 각각의 dc2.8xlarge 컴퓨팅 노드에는 16개의 조각이 있습니다. 각 노드 크기의 슬라이스 수에 대한 자세한 내용은 Amazon Redshift 관리 가이드클러스터 및 노드 정보 섹션을 참조하세요.

각 노드는 병렬 쿼리 실행에 참여하여 조각에 대한 데이터 분산 작업을 최대한 균일하게 실행합니다. 2개의 dc2.large 노드가 포함된 클러스터가 있는 경우 데이터를 4개의 파일 또는 4의 배수로 분할할 수 있습니다. Amazon Redshift는 워크로드를 분리할 때 파일 크기를 고려하지 않습니다. 따라서 압축 후 파일 크기가 1MB~1GB로 대략 같은지 확인해야 합니다.

로드 파일을 식별하기 위해 객체 접두사를 사용하려면 공통 접두사를 사용해 각 파일의 이름을 지정합니다. 예를 들어 venue.txt 파일은 다음과 같이 4개의 파일로 분할할 수 있습니다.

venue.txt.1 venue.txt.2 venue.txt.3 venue.txt.4

버킷의 폴더에 여러 파일을 넣고 폴더 이름을 접두사로 지정하면 COPY가 해당 폴더의 모든 파일을 로드합니다. 매니페스트 파일을 사용하여 로드될 파일을 명시적으로 나열하면 서로 다른 버킷이나 폴더에 있는 파일도 로드할 수 있습니다.

매니페스트 파일에 대한 자세한 내용은 Example: COPY from Amazon S3 using a manifest 섹션을 참조하세요.

압축되지 않은 구분된 파일에서 데이터 로드

압축되지 않은 구분된 데이터를 로드할 때 COPY 명령은 Amazon Redshift의 대규모 병렬 처리(MPP) 아키텍처를 사용합니다. Amazon Redshift는 병렬로 작동하는 조각을 자동으로 사용하여 Amazon S3 버킷의 대용량 파일에서 데이터 범위를 로드합니다. 병렬 로드가 발생하려면 파일을 구분해야 합니다. 예를 들어 파이프로 구분됩니다. CSV 파일에는 COPY 명령을 사용한 자동 병렬 데이터 로드도 사용할 수 있습니다. 테이블에서 배포 키를 설정하여 병렬 처리를 활용할 수도 있습니다. 기본 키에 대한 자세한 내용은 데이터 배포 스타일 작업 섹션을 참조하세요.

COPY 쿼리에 ESCAPE, REMOVEQUOTES 및 FIXEDWIDTH 키워드가 포함된 경우 자동 병렬 데이터 로드가 지원되지 않습니다.

하나 이상의 파일에서 대상 테이블로 데이터가 행당 한 줄씩 로드됩니다. 데이터 파일의 필드는 순서대로 왼쪽에서 오른쪽으로 테이블 열에 일치됩니다. 데이터 파일의 필드는 고정 너비이거나 문자 구분일 수 있습니다. 기본 구분자는 파이프(|)입니다. 기본적으로 모든 테이블 열이 로드되지만 필요할 경우, 쉼표로 분리된 열 목록을 정의할 수 있습니다. COPY 명령에서 지정된 열 목록에 포함되지 않은 테이블 열은 기본값으로 로드됩니다. 자세한 내용은 열 기본값 로드 단원을 참조하십시오.

데이터가 압축되지 않고 분리된 경우 다음 일반 프로세스를 따라 Amazon S3에서 데이터를 로드합니다.

  1. Amazon S3에 파일을 업로드합니다.

  2. COPY 명령을 실행하여 테이블을 로드합니다.

  3. 데이터가 올바로 로드되었는지 확인합니다.

COPY 명령의 예는 COPY 예 단원을 참조하세요. Amazon Redshift에 로드된 데이터에 대한 자세한 내용은 STL_LOAD_COMMITSSTL_LOAD_ERRORS 시스템 테이블을 확인하세요.

각각에 포함된 노드와 슬라이스에 대한 자세한 내용은 Amazon Redshift 관리 가이드클러스터 및 노드 정보 섹션을 참조하세요.