본문 바로가기
반응형

Data/Data Engineering16

KubernetesPodOperator으로 로컬 k8s에서 airflow 배치작업 만들기 로컬에서 mwaa airflow를 띄워보고 >> https://pearlluck.tistory.com/791 AWS MWAA local runner로 로컬에서 airflow 2.2 사용해보기 airflow DAG를 테스트해보는 환경이 없었다. 물론 DAG 코드가 간단해서 다행이지만 돌려보지도 않고 바로 staging에 반영을 해야하는 상황이였다. 심지어 나는 staging에 바로 머지할 권한도 없어서 매 pearlluck.tistory.com 로컬에서 쿠버네티스 환경을 구축해봤다. >> https://pearlluck.tistory.com/794 로컬 환경에서 쿠버네티스 구축하기 (kind, docker-desktop) 이전에 로컬에서 mwaa airflow를 띄워보았다. 직접 테스트해보고 구축해본 내용.. 2024. 1. 21.
로컬 환경에서 쿠버네티스 구축하기 (kind, docker-desktop) 이전에 로컬에서 mwaa airflow를 띄워보았다. 직접 테스트해보고 구축해본 내용은 아래의 글 참고^^ https://pearlluck.tistory.com/791 AWS MWAA local runner로 로컬에서 MWAA 사용해보기 airflow DAG를 테스트해보는 환경이 없었다. 물론 DAG 코드가 간단해서 다행이지만 돌려보지도 않고 바로 staging에 반영을 해야하는 상황이였다. 심지어 나는 staging에 바로 머지할 권한도 없어서 매 pearlluck.tistory.com 이번에는 로컬에서 쿠버네티스 환경을 구축해보려고 한다. 사실 가장 큰 목적은 이 로컬에서 띄운 mwaa airflow를 로컬 쿠버네티스 환경에서 사용해보는 것이다. 앞으로 아래와 같은 질문에 대한 답을 하나하나씩 찾아가.. 2024. 1. 15.
AWS MWAA local runner로 로컬에서 airflow 2.2 사용해보기 airflow DAG를 테스트해보는 환경이 없었다. 물론 DAG 코드가 간단해서 다행이지만 돌려보지도 않고 바로 staging에 반영을 해야하는 상황이였다. 심지어 나는 staging에 바로 머지할 권한도 없어서 매번 PR을 드린다. 그러다 단순한 오타나 따옴표 같은 에러라도 나는 날이면.....하하....^^;; 그래서 로컬에서 DAG 코드를 테스트해 볼 환경이 필요했다. 우리는 단순 ariflow가 아닌 aws의 mwaa를 사용한다. (오히려 좋아) 이와 같은 개발환경을 로컬에서 구축하고 DAG 코드를 테스트해 본 경험을 작성해보려고 한다. 사실 굉장히 간단한데 왜 지금까지 안해봤는지 모르겠다 ^0^ 들어가기에 앞서 우리 서비스의 AWS mwaa는 이렇게 staging과 prod만 있다. stagin.. 2024. 1. 7.
📖[Redshift][S3] 대용량 데이터 처리 고민: S3 Unload/Copy와 Redshift Specturm 외부테이블 대용량 데이터에 대한 고민 요즘들어 이런게 바로 데이터엔지니어링인가?싶은 부분이 있어서 기록해보려고 한다. 한창 개발중인 알고리즘은 최소 4주 이상의 사용자 행동로그를 기반으로 동작한다. 그런데 이때 이렇게 큰 대용량 데이터를 수집하고 처리하는데 아래와 같은 두가지 고민사항이 있었다. 1. 수집한 대용량 로그 데이터를 어디에 어떻게 저장할 것인가? 2. 분석하기 위해 대용량 데이터를 불러오는 가장 효율적인 방법은? 3. 최종 분석결과를 어디에 어떻게 저장할 것인가? 이러한 고민들을 엔지니어링 관점에서 어떻게 해결했는지 그리고 관련 기술에 대해 작성해보려고 한다. 1. 날짜기준으로 파티셔닝하여 s3에 unload한다 ( Redshift -> S3 ) 우리는 redshift에서 어찌저찌 수집 및 분석한 데이.. 2023. 4. 23.
[snowflake] Snowflake로 S3에 있는 데이터 COPY 해보기 우리는 redshift를 어떻게 쓰고 있는가? aws 데이터웨어하우스로 두가지 목적으로 사용하고 있다. 첫번째는 DS의 데이터 분석 작업용, product info나 event log 등 분석하기 위한 테이블들을 저장한다. 두번째는 배치작업용, 실제 서비스화하려는 알고리즘들을 개발하기 위해 대용량 데이터를 처리하는 목적으로 사용한다. redshift가 힘들어요 점점 데이터분석 작업 뿐만 아니라 배치작업들이 증가하고 있다. 특히나 대부분은 대용량 데이터를 처리하는 경우가 많다. 그런데 이걸 하나의 redshift에서 처리하다보니 redshift가 힘들어하는지 처리시간도 느려지고 물론 비용도 많이 나가고 있다. 그래서 일단은 최대한 여러가지 배치작업들을 동시에 처리하는걸 피하기 위해 배치 주기를 겹치지 않게.. 2023. 4. 9.
참고자료-DynamoDB 데이터 변경 이벤트 파이프라인 구축하기 https://medium.com/daangn/dynamodb-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B3%80%EA%B2%BD-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%ED%8C%8C%EC%9D%B4%ED%94%84%EB%9D%BC%EC%9D%B8-%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0-feat-kinesis-1733db06066 DynamoDB 데이터 변경 이벤트 파이프라인 구축하기 (feat. Kinesis) DynamoDB 데이터 변경 이벤트를 기반으로 AWS-Native 데이터 파이프라인 구축하기 medium.com 2021. 12. 27.
🧾대용량데이터 읽기 속도비교(read file, pandas, pyarrow) 처음으로 10만건 정도 되는 데이터를 다루어볼 수 있는 기회가 생겼다. 대용량데이터는 처음이다보니 데이터를 읽는 것부터 오래걸렸다.. 그래서 데이터를 읽기 위해 여러가지 방법을 시도해보았고, 그 결과들을 비교해보려고 한다! Read CSV file file로 읽어서 df로 저장하기 내가 가장 처음 시도한 방법이다. 별다른 생각없이 그냥 일반적으로 CSV 파일을 읽어오려고 했다. with open file로 읽어서 df로 저장하기 비슷한 방법이지만 with open으로도 파일을 읽어올 수 있었다. 아무래도 line마다 읽다보니 약간 시간이 더 걸리는듯? Pandas read_csv로 읽어서 df로 저장하기 어차피 dataframe을 사용할꺼라면 그냥 pandas의 read-csv를 사용하는게 더 나을지도?.. 2021. 9. 2.
대용량데이터 빠르게 DB에 넣기(bulk insert) django 프로젝트를 하면서 데이터를 db에 저장해야할 일이 생겼다. 그냥 일반적인 데이터라면 별다른 이슈가 없었겠지만, 프로젝트의 목적은 10만건정도 되는 대용량 데이터를 다루어보는 것이다. 그래서 보통과 다르게 빠르게 db에 insert할 수 있는 방법은 없는지 찾아보다가 알게 된 내용을 기록한당! 하지만, 결론적으로 이런 대용량 데이터는 이렇게 막연하게 RDB에 넣으면 안된다!!! BULK INSERT란? MYSQL에서 대량으로 INSERT를 수행하게 해주는 SQL문. 예를 들면 이렇게 3줄로 나오는 INSERT를 한줄로 수행할 수 있다. # 일반 INSERT insert into tb_name (a, b, c) values (1, 2, 3); insert into tb_name (a, b, c).. 2021. 8. 29.
애자일(Agile) 방법론- 스크럼(Scrum) VS 칸반(Kanban) 데이터팀은? Waterfall VS Agile 폭포수 모델(waterfall model) 전통적인 방법으로 [요구사항분석->기획->디자인->개발->테스트->출시] 순서대로 진행하는 방식 마치 폭포가 떨어지는식으로 순차적인 단계를 밟으며 진행 하지만,이 방식대로 진행할 경우 수정하기가 어렵다. 하나의 단계가 끝나야 다음단계로 넘어갈 수 있어서, 피드백을 즉각즉각 반영할 수 없다. 보통 현실에선 요구사항 분석 및 기획단계에서 모든걸 100% 예상할 수가 없다. 그래서 수정을 해야할 경우 다시 요구사항분석->기획->디자인->개발 이 흐름을 기다려야한다. 결국 제대로 이슈들이 처리되지 않은채 엉키게 되면 코드품질도 떨어지고, 요구사항도 만족하지 못한 결과로 이어짐 애자일(Agile) 방법론 전통적인 방법론 보다 조금더 유연.. 2021. 8. 16.
ETL ELT 차이 | 요즘엔 ETL에서 ELT로 흐름이 바뀌고 있다?@! ETL이란? Extract, Transform, Load 의 앞글자를 딴 용어인데, 여러가지 데이터소스에서 추출(Extract)하고, 데이터를 원하는 형태로 변형(Transform)하고, DW로 적재(Load)하는 과정. 즉, 데이터소스에서 가져온 rawdata로 데이터웨어하우스에 바로 저장할 수 없으니 ETL과정이 필요하다. 핵심은 Tranform하는 단계. 비즈니스 또는 분석용도에 맞춰 데이터를 잘 정제해야한다. 당연히 데이터크기가 크면 클수록, Tranform하는 시간도 오래걸린다. ETL파이프라인이 설계된 후에는 1일1회 등 방식으로 업데이트된 내용을 다시 가져와서 새로운 내용을 저장한다. ELT란? 요즘에는 ETL에서 ELT방식으로 흐름이 바뀌고 있다. T와 L의 위치가 바뀐 ELT 기존의 EL.. 2021. 8. 16.
728x90