Glue Crawlers가 Ion 데이터를 올바르게 인식하지 못함 - 해결 방법은 다음과 같습니다.
먼저 내가 이 일을 하고 싶은 이유를 설명해야 합니다. DynamoDB는 상대적으로 정적인 액세스 패턴을 가진 데이터에 적합한 NoSQL 데이터베이스입니다. 예측 가능한 대기 시간으로 방대한 양의 데이터를 쉽게 처리합니다. 이는 OLTP 워크로드에 적합하지만 분석 워크로드에는 일반적으로 정적 액세스 패턴 외에는 아무것도 없습니다. 그 때문에 데이터를 S3로 내보내고 분석 쿼리를 수행하기 위해 S3의 데이터에 대해 SQL을 던질 수 있는 서비스인 Athena를 사용하기로 결정했습니다.
Athena가 데이터를 읽을 수 있으려면 열 및 데이터 구조에 대한 정보와 스토리지 위치 및 데이터를 읽거나 쓰는 방법에 대한 정보를 포함하는 Glue 데이터 카탈로그의 테이블이 필요합니다. 모든 정보를 수동으로 채우고 싶지 않다면 크롤러를 사용하여 S3의 데이터를 선별하고 이를 기반으로 테이블을 생성할 수 있습니다. 그게 내가하려고 한 것입니다. 나는 나를 위해 테이블을 설정하는 크롤러를 배포하고 실행했습니다. 모든 것이 언뜻보기에 훌륭해 보였습니다.
Athena에서 데이터를 쿼리했을 때 다음과 같은 아름다운 오류 메시지로 응답했습니다.
HIVE_UNSUPPORTED_FORMAT: Unable to create input format
당연히 Athena의 테이블에서 무슨 일이 일어나고 있는지 보려고 했지만 그다지 도움이 되지는 않았습니다. create table 문도 표시되지 않습니다.
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.NullPointerException
이때 조금 짜증이 났습니다. Glue의 테이블을 보고 혼란스러워졌습니다. 크롤러 모자가 데이터 형식을 인식하는 것처럼 보이는 "분류: 이온"레이블을 보았습니다. 아래 스키마에서도 파일의 열과 데이터 유형을 올바르게 식별했습니다.
어떤 이유로든 필수 정보가 누락되었지만 Serde(Serializer/Deserializer)가 구성되어 있지 않아 데이터를 읽을 수 있는 방법을 시스템에 알릴 수 있습니다. documentation을 간략히 살펴보면 직렬 변환기 정보가 정적이고 계산되지 않는 세 개의 키-값 쌍으로 구성되어 있음을 알 수 있습니다. 크롤러가 추가하지 못한 이유를 모르겠습니다.
이 문제를 해결하려면 Glue의 "표 편집"대화 상자에 값을 추가하기만 하면 다음과 같이 표시됩니다.
복사하여 붙여넣기 가능한 버전은 다음과 같습니다.
Input Format:
com.amazon.ionhiveserde.formats.IonInputFormat
Output Format:
com.amazon.ionhiveserde.formats.IonOutputFormat
Serde serialization lib
com.amazon.ionhiveserde.IonHiveSerDe
그런 다음 원래 문을 다시 실행할 수 있으며 이제 Athena에서 데이터를 볼 수 있습니다.
크롤러가 왜 이런 기본 정보를 추가하지 않는지 이해가 안 되지만, AWS 지원팀과 이야기를 해보니 알려진 오류인 것 같고, 서비스 팀에서도 이를 인지하고 있습니다. 그들이 그것을 고칠 경우 또는 언제 - 평소와 같이 ETA가 없습니다.
이 게시물에서 무언가를 배웠기를 바랍니다. 질문, 피드백 또는 우려 사항이 있으면 언제든지 환영합니다.
— 모리스
제목 Photo by Torbjørn Helgesen on Unsplash
Reference
이 문제에 관하여(Glue Crawlers가 Ion 데이터를 올바르게 인식하지 못함 - 해결 방법은 다음과 같습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aws-builders/glue-crawlers-dont-correctly-recognize-ion-data-heres-how-you-fix-that-2m0h텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)