무슨 이유에선지, Crawler로 생성한 Glue Data DB에 스키마 생성이 되지 않았다. 처음에는 데이터가 또 문제가 있어서 그렇겠거니 하고 Glue Studio에서 해결을 해보려고 했으나, 업데이트를 해도 원하는 데이터가 딱 만들어지지 않았다. 

대충 이런 데이터가 있었다. (문제가 생길 수 있어 내부 데이터는 실제 데이터 값이 아닌 랜덤으로 생성된 값을 넣었다.)

변환된 결과

바로 위의 사진이 변환된 결과이다. 칼럼 이름은 다 어디가버리고, col{0..n}이라고 자기 마음대로 이름이 붙어있다.

Try #1 Crawler의 Classifier 활용

먼저 Classifier를 활용하여 직접 칼럼 이름을 명시해보았다. 그런데 설정을 잘못한 건지 원래 안되는 건지 잘되지 않아 다른 방식으로 넘어갔다.

Crawler에 Classifier를 추가했지만 여전히 col{0..n}으로 표시될 뿐이였다.

Try #2 Glue Studio에서 수작업으로 일일이 이름 지정

가장 시간도 많이 잡아먹고, 바보같은 짓이였는데 이것저것 해보다 안되니 그냥 30여개 정도 되는 칼럼 이름, 내가 손으로 쓰고 끝낸다는 심정으로 시도해봤다.

결론은 실패였는데, 우선 Glue Studio에서 이름을 지정해놓고 RUN을 돌리고 나면, 분명 Data Preview로 봤을 때는 문제 없이 Data Brew Target으로 잘 들어가던 데이터가 확인만 하고 나면 다시 원래 상태로 복귀되는 문제가 발생했다. 처음에는 무언가 문제가 있는 거 같다는 생각에 이렇게도 해보고 저렇게도 해봤는데, 결국 요금만 날라가고 소득이 없었다.

그리고 Data 자체도 Glue에서 정상적으로 받아들이지 못하는 느낌도 있었다.

다음 그림처럼 새로운 Action을 생성하기만 하면 Source Key와 Target 간의 맵핑이 전부 초기화되는 문제가 발생했다. drop을 별도의 Action으로 실행하려고 만든 Action이였는데 문제가 발생해버렸다. 여기서 더 머리가 아팠던 부분은 저 부분을 날리려고 해도, 날릴 수가 없었다.

만약 저 Action을 날리면 이렇게 잘 작성된 Mapping Action이 슝 날라가버린다.

 이렇게 말이다. 검토를 꽤 오래했으나 도대체 무슨 문제인지를 모르겠다. Target을 잘못 설정해서 그랬던 거 같기도 하고... Target을 잘못 설정한다고 Source에서 내려온 데이터를 변환한게 무슨 영향을 주겠는가 싶기도 하고... 결국 결론은 잘 모르겠다였다. 이 방법이 아닌가 보다라고 해당 방법은 폐기하기로 마음을 먹게 되었다.

Try #3 CSV 파일 수정

앞서 시간을 쏟았던 게 너무나도 허무하다고 느낄만큼 해결은 간단했다. 

문제는 바로 헤더의 맨 처음 값이 비어있었기 때문이였다. Glue의 Crawler는 별도로 명시가 없는 경우, Header를 알아서 인식하고 스키마를 자동으로 작성하여 데이터베이스를 구성한다. 근데 맨 앞에 빈 값이 들어가버리니 이를 인식하지 못했던 거 같다.

두 가지 해결이 가능했다. row 번호를 의미하는 첫 번째 열을 통째로 날리던가, 그냥 칼럼 이름을 넣어주면 된다.

그래서 NO라는 칼럼 이름을 넣어줌으로써 문제를 해결했다. 괜히 어렵게 돌아가려고 하다가 손해가 이만저만이 아니다. 다음에는 이런 문제로 시간을 이렇게는 쓰지 않고 싶다 ㅠㅠ 

 

'Data Engineering' 카테고리의 다른 글

Zookeeper의 znode  (0) 2023.05.18
Coursera 데이터 엔지니어링 강의 목록  (0) 2022.12.08
Spark  (0) 2022.11.20
로그 데이터 수집  (0) 2022.11.18
[AWS Glue] Crawler를 통해 S3에서 Data Catalog로 데이터 추출  (1) 2022.10.26