실패한 Amazon Redshift 데이터 로드 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 7월 17일

실패한 Amazon Redshift 데이터 로드 문제를 해결하려면 어떻게 해야 합니까?

간략한 설명

STL_LOAD_ERRORS 테이블을 사용하여 특정 로드 도중 발생한 오류를 식별합니다.

해결 방법

참고: 다음 단계는 도시 및 시설에 대한 예제 데이터 세트를 사용합니다.

1.     다음 내용으로 Amazon Simple Storage Service(Amazon S3) 버킷에서 venue_pipe0000_part_00으로 명명된 원시 파일을 생성합니다. 자세한 내용은 파이프로 구분된 파일(기본 구분 기호)에서 LISTING 로드를 참조하십시오.

7|BMO Field|Toronto|ON|0
16|TD Garden|Boston|MA|0
23|The Palace of Auburn Hills|Auburn Hills|MI|0
28|American Airlines Arena|Miami|FL|0
37|Staples Center|Los Angeles|CA|0
42|FedExForum|Memphis|TN|0
52|PNC Arena|Raleigh|NC  ,25   |0
59|Scotiabank Saddledome|Calgary|AB|0
66|SAP Center|San Jose|CA|0
73|Heinz Field|Pittsburgh|PA|65050

2.     다음 예제와 유사한 master_schema.venue1 테이블을 생성합니다.

CREATE TABLE VENUE1(
VENUEID SMALLINT,
VENUENAME VARCHAR(100),
VENUECITY VARCHAR(30),
VENUESTATE CHAR(2),
VENUESEATS INTEGER
) DISTSTYLE EVEN;

3.     로드 실패를 진단할 로드 보기를 생성합니다.

create view loadview as
(select distinct tbl, trim(name) as table_name, query, starttime,
trim(filename) as input, line_number, colname, err_code,
trim(err_reason) as reason
from stl_load_errors sl, stv_tbl_perm sp
where sl.tbl = sp.id);

4.     Copy 명령을 사용하여 데이터를 로드합니다. 다음 예제에서 아래와 같은 값을 대체합니다.
your_S3_bucket: S3 버킷 이름
arn:aws:iam::123456789012:role/redshiftcopyfroms3: 클러스터가 인증 및 권한 부여에 사용하는 AWS Identity and Access Management(IAM) 역할의 Amazon 리소스 이름(ARN). 자세한 내용은 파라미터를 참조하십시오.

master=# copy venue1
master-# from 's3://your_S3_bucket/venue/'
master-# iam_role 'arn:aws:iam::123456789012:role/redshiftcopyfroms3' delimiter '|' ;

5.     테이블에 관한 로드 세부 정보의 로드 보기를 쿼리합니다.

master=# select * from loadview where table_name='venue1';
tbl | 265190
table_name | venue1
query | 5790
starttime | 2017-07-03 11:54:22.864584
input | s3://your_S3_bucket/venue/venue_pipe0000_part_00
line_number | 7
colname | venuestate
err_code | 1204
reason | Char length exceeds DDL length

이 쿼리의 출력은 다음과 같은 중요한 정보를 포함합니다.

  • 오류를 일으키는 파일.
  • 오류를 일으키는 열.
  • 입력 파일의 라인 번호.
  • 예외 이유.

이 예제에서는 길이 값으로 인해 예외가 발생하므로 venuestate 열을 추가해야 합니다. 이 값(NC, 25 |)은 DDL VENUESTATE CHAR(2)에 정의된 길이보다 깁니다. 이 문제를 해결하려면 올바른 값을 사용하여 파일을 수정합니다.

7|BMO Field|Toronto|ON|0
16|TD Garden|Boston|MA|0
23|The Palace of Auburn Hills|Auburn Hills|MI|0
28|American Airlines Arena|Miami|FL|0
37|Staples Center|Los Angeles|CA|0
42|FedExForum|Memphis|TN|0
52|PNC Arena|Raleigh|NC|0
59|Scotiabank Saddledome|Calgary|AB|0
66|SAP Center|San Jose|CA|0
73|Heinz Field|Pittsburgh|PA|65050

6.     데이터 로드를 다시 로드합니다.

master=# copy venue1
from 's3://your_S3_bucket/sales/'
iam_role 'arn:aws:iam::123456789012:role/redshiftcopyfroms3' delimiter '|' ;
INFO:  Load into table 'venue1' completed, 808 record(s) loaded successfully.

이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?