AWS Glue 크롤러를 사용하여 CSV 파일에서 Amazon Athena 테이블을 생성했습니다. 테이블의 첫 번째 열을 쿼리하면 "SYNTAX_ERROR: 줄 1:9: 열 'column_id'를 확인할 수 없습니다"와 비슷한 오류 메시지가 나타납니다.

일반적으로 이 오류는 ​바이트 순서 표시(BOM)가 있는 UTF-8 형식으로 CSV 파일을 인코딩하는 경우에 발생합니다. AWS Glue는 BOM을 인식하지 못하고 BOM을 물음표로 변경하며, Amazon Athena는 물음표를 인식하지 못합니다.

이 구문 오류를 해결하려면 Athena 또는 AWS Glue에서 물음표를 제거하십시오.

바이트 순서 표시는 첫 번째 열의 이름 시작 부분에 자동으로 추가됩니다​. 바이트 순서 표시를 보려면 16진수 편집기에서 파일을 여십시오. 파일은 다음과 같이 나타납니다. 

         
1 POSTAL_CODE_START  POSTAL_CODE_START    NM_REGION REGION_CODE
2 69900001 69924999 AC - Capital 15

파일에서 AWS Glue 크롤러를 실행하면 크롤러는 바이트 순서 표시 옆에 물음표를 추가합니다. 크롤러는 열 헤더를 열 이름으로 사용하기 때문에 Athena 테이블의 첫 번째 열에는 ?POSTAL_CODE_START와 같은 이름이 있을 수 있습니다. (SHOW CREATE TABLE을 실행하면 물음표를 볼 수 있습니다.) Athena에서 열 이름은 밑줄 이외의 다른 특수 문자를 허용하지 않습니다.

Athena에서 물음표를 제거하려면

  1. 크롤러 DDL 문(SHOW CREATE TABLE table_name)을 복사합니다.
  2. 물음표를 제거합니다.
  3. 문을 실행합니다.
    참고: 테이블 속성에 'skip.header.line.count'='1'을 포함시켜야 합니다.

AWS Glue에서 물음표를 제거하려면

  1. AWS Glue 콘솔을 엽니다.
  2. 테이블을 선택합니다.
  3. Action(작업) 드롭다운 메뉴에서 View details(세부 정보 보기)를 선택합니다.
  4. Edit schema(스키마 편집)를 선택합니다.
  5. 첫 번째 열을 선택하고 이름을 바꿉니다. 원한다면 같은 이름을 열에 사용할 수 있습니다.
    참고: 콘솔에서 물음표가 보이지 않더라도, 이름을 입력하면 AWS Glue에서 물음표가 제거됩니다.
  6. 페이지 오른쪽 상단 모서리에서 Save(저장)를 선택합니다.

테이블 스키마를 다시 구축하지 않도록 AWS Glue를 구성하려면

같은 테이블에서 크롤러를 다시 실행하기 전에:

  1. AWS Glue 콘솔에서 Crawlers(크롤러)를 선택한 다음 해당 크롤러를 선택합니다.
  2. Action(작업) 드롭다운 메뉴를 열고 Edit crawler(크롤러 편집)를 선택합니다.
  3. Output(출력)을 선택합니다.
  4. Configuration options(구성 옵션)를 확장합니다.​
  5. When the crawler detects schema changes in the data store, how should AWS Glue handle table updates in the data catalog(크롤러가 데이터 스토어에서 스키마 변경 사항을 감지할 때 AWS Glue는 데이터 카탈로그에서 테이블 업데이트를 어떻게 처리해야 합니까)? 아래에서 다음 옵션을 선택합니다.
    Ignore the change and don't update the table in the data catalog(변경 사항을 무시하고 데이터 카탈로그에서 테이블을 업데이트하지 않습니다).
    Update all new and existing partitions with metadata from the table(테이블에서 메타데이터가 있는 새 파티션과 기존 파티션을 모두 업데이트합니다).
  6. How should AWS Glue handle deleted objects in the data store(AWS Glue는 데이터 스토어에서 감지된 객체를 어떻게 처리해야 합니까)? 아래에서 Delete tables and partitions from the data catalog(데이터 카탈로그에서 테이블 및 파티션 삭제)를 선택합니다.
  7. Next(다음)를 선택한 다음 Finish(완료)를 선택합니다.

페이지 내용이 도움이 되었습니까? | 아니요

AWS 지원 지식 센터로 돌아가기

도움이 필요하십니까? AWS 지원 센터를 방문하십시오.

게시: 2019-01-07