S3에 데이터를 올리고 Athena로 쿼리해보는 실습 1 1단계: 샘플 데이터 준비 직접 CSV 파일을 만들어도 좋고, MovieLens 같은 공개 데이터를 사용해도 됩니다. 간단하게 아래 내용을 movies.csv로 저장하세요. 공개 데이터 https://grouplens.org/datasets/movielens/ 2 movieId,title,genres 1,Toy Story (1995),Adventure|Animation|Children|Comedy|Fantasy 2,Jumanji (1995),Adventure|Children|Fantasy 3,Grumpier Old Men (1995),Comedy|Romance 3 2단계: S3 버킷 생성 및 데이터 업로드 (12개월 무료) AWS 콘솔에서 S3 서비스로 이동합니다. 4 서울리전으로 이동 '버킷 만들기'를 클릭합니다. (이름은 중복되지 않게 my-data-eng-lab-이름 식으로 지어주세요.) 버킷 내부에 raw-data/라는 이름의 폴더를 만듭니다. 준비한 movies.csv 파일을 이 폴더에 업로드합니다. 5 query-results 폴더도 만든다. 6 3단계: Athena 설정 (매월 5TB까지 스캔 무료) Athena 서비스로 이동합니다. 처음 시작한다면 'Settings' 탭에서 'Manage'를 클릭하여 쿼리 결과가 저장될 S3 경로를 지정해야 합니다. (예: s3://my-data-eng-lab-이름/query-results/) Editor로 돌아와 아래 SQL 쿼리를 입력하여 테이블을 생성합니다. s3://my-data-eng-001/raw-data/movies.csv 7 CREATE EXTERNAL TABLE IF NOT EXISTS default.movies ( movieId int, title string, genres string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE LOCATION 's3://your-bucket-name/raw-data/' -- 생성한 버킷 이름으로 수정 TBLPROPERTIES ('skip.header.line.count'='1'); CREATE EXTERNAL TABLE IF NOT EXISTS default.movies ( movieId int, title string, genres string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE LOCATION 's3://my-data-eng-001/raw-data/' -- 생성한 버킷 이름으로 수정 TBLPROPERTIES ('skip.header.line.count'='1'); s3://my-data-eng-001/raw-data/movies.csv 8 4단계: SQL 데이터 분석 테이블 생성이 완료되었다면, 이제 일반적인 SQL처럼 데이터를 조회할 수 있습니다. 전체 조회: SELECT * FROM movies LIMIT 10; 장르별 분석: SELECT genres, count(*) FROM movies GROUP BY genres; 9 S3: 5GB까지는 무료이지만, 실습이 끝나면 생성한 버킷을 비우고 삭제하는 것이 가장 안전합니다. Athena: 쿼리 성공 여부와 상관없이 '스캔한 데이터 양'에 따라 과금됩니다. 파일 용량이 작을 때는 거의 0원에 가깝지만, 대용량 실습 시에는 주의하세요.