AWS Athena란 무언인가?
Amazon Athena
Amazon Athena는 표준 SQL을 사용해 Amazon S3에 저장된 데이터를 간편하게 분석할 수 있는 대화식 쿼리 서비스입니다. Athena는 서버리스 서비스이므로 관리할 인프라가 없으며 실행한 쿼리에 대해서만 비용을 지불하면 됩니다.
Athena는 사용이 쉽습니다. Amazon S3에 저장된 데이터를 가리키고 스키마를 정의한 후 표준 SQL을 사용하여 쿼리를 시작하기만 하면 됩니다. 그러면 대부분 결과가 수 초 이내에 제공됩니다. Athena에서는 데이터 분석을 준비하기 위한 복잡한 ETL 작업이 필요 없습니다. 따라서 SQL을 다룰 수 있는 사람은 누구나 신속하게 대규모 데이터 세트를 분석할 수 있습니다.
Athena는 AWS Glue 데이터 카탈로그와 즉시 통합되므로, 다양한 서비스에 걸쳐 통합된 메타데이터 리포지토리를 생성하고, 데이터 원본을 크롤링하여 스키마를 검색하고 카탈로그를 신규 및 수정된 테이블 정의와 파티션 정의로 채우며, 스키마 버전을 관리할 수 있습니다.
AWS Glue란 무엇인가?
AWS Glue는 완전 관리형 추출, 변환 및 로드(ETL) 서비스로, 효율적인 비용으로 간단하게 여러 데이터 스토어 및 데이터 스트림 간에 원하는 데이터를 분류, 정리, 보강, 이동합니다. AWS Glue는 AWS Glue Data Catalog로 알려진 중앙 메타데이터 리포지토리, 자동으로 Python 및 Scala 코드를 생성하는 ETL 엔진, 그리고 종속성 확인, 작업 모니터링 및 재시도를 관리하는 유연한 스케줄러로 구성됩니다. AWS Glue는 서버리스이므로 설정하거나 관리할 인프라가 없습니다.
EC2가 인스턴스(컴퓨팅)을 모아놓은 것이고, 람다가 함수들을 모아놓은 것이라면, Glue는 데이터들을 모아서 관리한다고 보면 된다.
[실습]
1. S3 생성
데이터를 담아 둘 Amazon S3를 먼저 생성 해야 한다.
버킷 만들기를 클릭한다.
이름을 설정한 후 나머지는 기본값으로 세팅한 후 버킷을 만들어 준다.
이 안에는 csv 형식의 파일을 집어 넣을 것이다.
그 후 csv 파일을 하나 넣어 주었다.
원래는 공공데이터의 csv를 넣어주려고 했지만 한글로 넣으면 Glue에서 글자가 깨지는 현상을 확인하여 영어로 된 csv를 활용 하였다.
2. Glue 생성
그 후 Glue Studio에 들어와서 크롤러를 선택한다.
그 후 새로운 크롤러를 만들 것이므로 Create crawlers를 클릭한다. 크롤러는 스키마 생성을 자동화 할 수 있게 도와준다.
먼저 크롤러 이름을 설정한 후에 Next를 눌러준다.
현재 우리는 데이터가 Glue Table에 매핑되어 있지 않으므로 Not yet을 선택한다.
그 후 Data sources에 Add a data source를 클릭해준다.
그 후 Data source를 S3로 지정해 주고 위에서 만든 athena-example-yang 버킷을 선택 해 준다.
그 후 현재 파일이 하나 있긴 하지만 모든 서브 폴더를 크롤할 수 있게 해놓는다.
그리고 맨 밑은 제외 하는 패턴으로 logs 폴더 및에 모든 개체는 탐색되지 않는다는 것이다.
설정한 후 방금 설정한 S3를 선택하고 Next를 눌러준다.
그 다음 IAM 역할을 지정해 줘야 한다.
우리는 따로 만든 것이 없으므로 여기서 Create new IAM role을 클릭 해 준다.
IAM 역할 이름을 지정해 준 후 Create를 눌러 생성을 해 준다.
그 다음 Next를 눌러준다.
그 후 Target database를 생성해야한다. 나는 현재 생성 해 놓은게 없으므로 Add database를 누른다.
그 후 이름을 지정하고 database를 생성 해 준다.
Crawler schedule은 On demand로 해 주고 방금 만든 Target database를 선택해 준다.
그 후 Next를 눌러준다.
완성이 되면 크롤러가 하나 추가 된 것을 볼 수 있다.
그 후 크롤러를 클릭한 이후 Run을 돌려 준다.
그 후 Cloudwatch 로그 그룹을 통해서 크롤러가 어떻게 돌아갔는지 로그를 확인할 수 있다.
그 후 다시 Glue로 돌아와서 Tables를 확인 해 보니 하나 생성 된 것을 확인할 수 있었다.
들어가서 Schema를 확인 해 보았다.
실제 csv 파일과 비교해 보았다. 소문자로 바뀌었지만 잘 나온 것을 확인할 수 있었다.
또한 Actions에서 View Properties를 해 보았다.
그러자 이러한 json 형식으로 보이는 것을 확인할 수 있었다.
3. Athena 생성
그 다음 Athena에 들어온 후 쿼리 편집기 탐색을 클릭한다.
그러면 이런식으로 하면이 뜨게 된다.
왼쪽을 보면 데이터 원본 및 데이터베이스가 우리가 위에서 Glue에서 진행했던 내용을 확인할 수 있따.
그 후 밑 테이블을 확인하니 위에서 확인했던 스키마를 확인할 수 있었다.
그 후 테이블의 점 세개 부분을 클릭하여 테이블 미리보기를 클릭한다.
하지만 에러가 하나 뜨게 된다.
이는 출력 위치가 제공되지 않았다는 것이다. 그러므로 S3로 가서 출력시킬 폴더를 하나 생성하고 그 위치를 지정해 주어야 한다.
그 후 S3로 돌아와서 위처럼 폴더 만들기를 통해서 output이라는 폴더를 생성 해 주었다.
다시 Athena로 돌아와서 설정을 클릭한다. 설정을 클릭한 후 관리를 클릭해 보면
위처럼 방금 만들어준 output 폴더를 지정한 후 저장을 클릭한다.
그 후 쿼리를 다시 돌려보면 이렇게 결과가 출력이 된다.
위에서 제한을 10개로 두었기 때문에 10개의 정보를 확인할 수 있었다.
이렇듯 AWS Glue의 데이터 카탈로그와 Athena를 사용하면 AWS Glue를 통해 Athena에서 쿼리할 데이터베이스와 테이블(스키마)을 만들거나, Athena를 사용하여 스키마를 만든 후 AWS Glue 및 관련 서비스에 이용이 가능하다.
출처
https://www.youtube.com/watch?v=8VOf1PUFE0I&ab_channel=AjayWadhara
'[AWS] > AWS 기타' 카테고리의 다른 글
[AWS] CloudTrail란 무엇인가? (0) | 2022.09.22 |
---|---|
[AWS] RDS 유형 변경시 확인해야 할 점 (0) | 2022.09.21 |
[AWS] Amazon Inspector 란 무엇인가? (2) | 2022.09.20 |
[AWS] Savings Plan 사용법 (0) | 2022.09.19 |
[AWS] Kinesis란 무엇인가? (0) | 2022.09.15 |
[AWS] RDS RI 구매 방법 (0) | 2022.09.15 |
[AWS] S3 객체 URL 호스팅 스타일과 HTTPS 연결 (2) | 2022.09.13 |
[AWS] VPC와 외부 네트워크 연결하는 방법 (이론) (0) | 2022.09.13 |
댓글