Athena DynamoDB 커넥터에서 “열을 찾을 수 없음” 오류를 해결하려면 어떻게 해야 하나요?

4분 분량
0

Amazon Athena DynamoDB 커넥터를 사용할 때 “열을 찾을 수 없음” 오류가 발생합니다.

간략한 설명

“열을 찾을 수 없음” 오류는 Athena DynamoDB 커넥터에 내장된 스키마 추론의 기능이 제한되어 있기 때문에 발생합니다. Athena DynamoDB 커넥터는 AWS Lambda 함수를 사용해 테이블 스키마를 유추합니다. 그리고 테이블에 있는 데이터 샘플만 분석합니다.

이 함수가 데이터의 샘플만 분석하기 때문에 스키마에서 샘플 데이터에 속하지 않는 열의 데이터를 놓칠 수 있습니다. Amazon DynamoDB 테이블의 데이터 형식이 잘못된 경우에도 “열을 찾을 수 없음” 오류가 발생할 수 있습니다.

중요:

  • DynamoDB 테이블에는 Athena에서 지원하지 않는 카멜 표기법, 대문자, 또는 데이터 유형이 포함될 수 없습니다.
  • AWS Glue와 Athena는 카멜 표기법, 대문자, 또는 밑줄 이외의 특수 문자를 읽을 수 없습니다.

해결 방법

AWS Glue를 사용해 DynamoDB 테이블에서 스키마를 유추하려면 다음 단계를 따르세요.

  1. AWS Glue 크롤러를 사용해 AWS Glue 테이블을 생성합니다.
  2. DynamoDB 테이블 스키마를 검토해 크롤러가 데이터를 제대로 검색했는지 확인합니다.
  3. ColumnMapping 속성을 사용해 누락된 데이터 열을 방지할 수 있습니다.

참고: 데이터베이스 이름, 테이블 이름, 열 이름은 255자를 초과할 수 없습니다. 소문자, 숫자, 밑줄을 사용할 수 있습니다.

AWS Glue 크롤러를 사용하여 AWS Glue 테이블을 생성하세요.

다음 단계를 따르세요.

  1. AWS Glue 콘솔을 엽니다.
  2. 탐색 창의 데이터 카탈로그에서 크롤러를 선택합니다.
  3. 크롤러 화면에서 크롤러 생성을 선택합니다.
  4. 크롤러 속성 설정 페이지의 크롤러 세부 정보에서 크롤러 이름을 입력하세요. 그리고 다음을 선택합니다.
  5. 데이터 소스 구성에서 아직 없음을 선택합니다. 그리고 데이터 원본 추가를 선택합니다.
  6. 데이터 소스 추가 대화 상자에서 다음 정보를 입력합니다.
    데이터 소스에서 DynamoDB를 선택합니다.
    테이블 이름에 DynamoDB 테이블 이름을 입력합니다.
    DynamoDB 데이터 소스 추가를 선택합니다. 그리고 다음을 선택합니다.
  7. 보안 설정 구성 페이지의 IAM 역할에서 기존 IAM 역할을 선택합니다. 또는 새 IAM 역할 생성을 선택합니다. 그리고 다음을 선택합니다.
    참고: IAM 역할에 필요한 권한이 있어야 합니다.
  8. 출력 및 일정 설정 페이지의 출력 구성에서 데이터베이스 추가를 선택합니다. 새 탭이 열리고 데이터베이스 만들기 페이지가 열립니다.
  9. 데이터베이스 생성 페이지에서 다음 정보를 입력합니다.
    이름에 함수의 이름을 입력합니다.
    위치 값을 dynamo-db-flag로 설정합니다. 그리고 데이터베이스 생성을 선택합니다. 출력 및 일정 설정 탭으로 돌아갑니다.
    참고: Athena에서 테이블을 인식하려면 dynamo-db-flag와 동일한 값을 사용해야 합니다.
  10. 출력 및 일정 설정 페이지의 대상 데이터베이스에서 데이터베이스를 선택합니다. 그리고 다음을 선택합니다.
  11. 크롤러 생성을 선택합니다.
  12. 크롤러 페이지에서 크롤러 실행을 선택합니다.

테이블 스키마 검토

다음 단계를 따르세요.

  1. AWS Glue 콘솔을 엽니다.
  2. 탐색 창의 데이터 카탈로그에서 데이터베이스를 선택합니다.
  3. 데이터베이스를 선택합니다.
  4. 테이블에서 내 테이블을 선택합니다.
  5. 열을 검토하여 열 및 데이터 유형이 제대로 검색되었는지 확인합니다.

columnMapping 속성을 구성합니다.

참고:열 매핑 파라미터는 최상위 열 이름에만 적용됩니다. 중첩된 필드에는 적용되지 않습니다.

다음 단계를 따르세요.

  1. AWS Glue 콘솔을 엽니다.
  2. 탐색 창의 데이터 카탈로그에서 테이블을 선택합니다.
  3. 테이블 페이지에서 테이블을 선택합니다.
  4. 작업을 선택하고 작업 편집을 선택합니다.
  5. 테이블 편집 페이지의 테이블 속성에서 추가를 선택하고 다음 정보를 입력합니다.
    필드에 columnMapping을 입력합니다.
    필드에 mapping value=column name 형식으로 열 이름을 입력합니다.
    예를 들어, 테이블에 firstName, Lastname, Age, and region 등의 열이 포함되어 있습니다. 다음의 columnMapping 속성 값 형식을 사용하세요.
    firstname=firstName
    lastname=Lastname
    age=Age
    region=region
  6. Amazon Athena 콘솔을 엽니다.
  7. 쿼리 편집기 페이지의 데이터에 다음 정보를 입력합니다.
    데이터 소스DynamoDB를 입력합니다.
    데이터베이스에서 내 데이터베이스를 선택합니다.

일반 사용자 오류

"GENERIC_USER_ERROR: Encountered an exception" 오류가 발생할 수 있습니다. 이 오류는 DynamoDB 테이블의 열에 있는 데이터가 Athena와 호환되지 않을 때 발생할 수 있습니다. 문제를 해결하려면 테이블의 데이터를 Athena와 호환되는 유형으로 변경하세요.

테이블의 데이터 유형을 변경하려면 다음 단계를 완료하세요.

  1. AWS Glue 콘솔을 엽니다.
  2. 탐색 창의 데이터 카탈로그에서 테이블을 선택합니다.
  3. 테이블 페이지에서 업데이트하려는 테이블을 선택합니다.
  4. 스키마에서 스키마 편집을 선택합니다.
  5. 호환되지 않는 데이터가 있는 열을 선택하고 편집을 선택합니다.
  6. 데이터 유형에서 Athena와 호환되는 데이터 유형을 선택합니다. 그런 다음 저장을 선택합니다.
  7. 새 테이블 버전으로 저장을 선택합니다.
  8. Athena 콘솔을 엽니다.
  9. 쿼리 편집기에서 쿼리를 다시 실행합니다.

관련 정보

Athena와 AWS Glue를 함께 사용할 때의 모범 사례

AWS 공식
AWS 공식업데이트됨 8달 전