일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Glue
- python
- docker airflow
- airflow설치
- 공백null치환
- 이직 3개월차
- 코테
- 1000개 이상
- import from 차이점
- 공백Trim
- 파이써닉
- Glue의 두 가지 핵심 기능
- Binary_gap
- 코딩테스트
- 데이터카탈로그
- GCP mysql
- Codility
- 맞출수있었는데...
- 도커 에어플로
- 답안지표기잘못한느낌...
- docker-compose
- 차이
- docker
- 디비설치
- 공백트림
- AWS
- s3목록
- 파이서닉
- cyclerotation
- 프로그래머스
- Today
- Total
목록AWS (4)
작은하마
AWS EMR = Apache Spark, Apache Hive, Apache HBase, Apache Flink, Apache Hudi 및 Presto와 같은 오픈 소스 도구를 사용하여 방대한 양의 데이터를 처리하기 위한 업계 최고의 클라우드 빅 데이터 플랫폼 AWS GLUE = 분석, 기계 학습 및 애플리케이션 개발을 위해 데이터를 쉽게 탐색, 준비, 그리고 조합할 수 있도록 지원하는 서버리스 데이터 통합 서비스 데이터 엔지니어의 직무를 하다보니 두가지의 서비스를 사용해봤다. EMR에 Airflow를 설치하여 mysql => s3, s3 => s3 를 처리했고 Glue를 사용하여 S3 => Redshift 를 처리했다. 둘다 같은 업무를 했기 떄문에 왜? AWS에서 다수의 빅데이터 서비스를 내놓았을까..

최근 면접에서 "Athena와 Redshift Spectrum 차이가 무엇입니까?" 에 대한 질문이 들어와서 적잖히 당황한적이 있었다. 문론 나는 Athena도 Redshift Spectrum(Spectrum)도 둘다 개발을 할 때 유용하게 사용한것들이다. 일단 나의 경우로는 Athena는 서버리스 데이터쿼리 방식으로 따로 클러스터가 존재하지않고 Specturm은 레드시프트의 클러스터리소스를 사용한다 또한, 둘 다 Glue의 데이터 카탈로그를 사용하여 S3의 데이터를 읽어오게 되는데 여기서 차이는 Athena는 다른 리전에 있는 S3에 접근이 가능하지만 Spectrum은 동일 리전에 존재해야하는것? 아래는 더 정확한 성능 비교를 한 도표이다. 이 표를 보고 내가 놀랬던 것은 비용. Athena만 S3 데..
AWS에서 Boto3는 가장 기본으로 가져가야할 지식이 아닌가 한다. 최근 Glue에서 S3의 Log파일을 읽어와 DF에서 전처리를 진행하는 작업을 하나 만들었었는데 최근 이게 문제가 발생하였다. list_objects_v2를 사용하여 S3의 목록 갯수가 1000개가 넘어가면 1000개 이후의 목록들은 잘려서 가져오는데 여기서 문제가 발생하였다. 확인결과 리스트에 1130개 정도의 목록이 있었고 필요한 Log파일은 1000개를 제외한 130개 중 하나에 있었다. 여러가지 해결방안이 생각이 났다. 1. log파일의 경로를 파티셔닝 시켜서 1000개이상이 되지 않도록 만든다 => 날짜별 폴더를 생성하게 만들기 2. 파일을 오름차순, 또는 내림차순시켜서 해당파일을 1000개 안으로 가져오게 만든다. 3. 10..

Glue에서 수많은 잡을 만들어서 일배치를 하고있는데 매일 저녁, 새벽 이 배치가 잘 끝났는지 아니면 오류가나서 중지된건지 매일 일일이 들어가서 보기가 너무너무 귀찮아 Slack으로 배치 결과를 보내기로했다. 원래는 오류가 나면 CloudWatch에서 SNS로 이메일로 오류를 전송해주거나 따로 JOB아래에 SNS로 결과를 이메일로 전달해주는 코드로 확인하곤 했는데 이번에는 Slack이라는 좋은 협업툴이 있어 이쪽으로 전송을 하게되었다. 빨간 박스에 있는 Job에서 각각의 log파일을 파싱하여 중단을 할지 뒷단의 MT Job을 진행시킬지 결정한다. result=s3.list_objects_v2(Bucket=bucket, Prefix=key_path) for item in result['Contents']:..