목록DataEngineering (16)
NIRVANA
프로젝트를 진행하다보니 airflow에서 spark job을 실행해야 하는 일이 생겼다.SparkSubmitOperator를 사용하여 spark job을 실행하기 위해서는 airflow에 설치 되어야 할 것들이 몇개 있다. 📌Airflow 설치 목록apache-airflow-providers-apache-spark 모듈(python)spark binaryjavahadoop aws aws-java-sdk-bundle 사실 뒤에 2개는 s3에서 파일을 읽어와야 해서 필요한 거고 앞에 3개만 있어도 된다. 먼저 SparkSubmitOperator에 대해 짧게 알아 보려고 한다(왜냐면 내가 SparkSubmitOperator 개념을 안 알아보고 하다가 3일 삽질을 했으므로) SparkSubmitOpe..
📌Kafka란? 2008년 링크드인에서 내부 실시간 데이터 처리를 위해 개발한 소프트웨어 플랫폼으로 Scala와 Java로 작성 되었다. 사용자의 event data를 실시간으로 수집하고 바로 action 취하기 위해 사용되며 2011년 초에 아파치 재단에 프로젝트로 편입 되어 오픈소스화되었다. 실시간 데이터를 처리 하기 위해 설계된 오픈소스 분산 스트리밍 플랫폼Scalability와 Fault Tolerance를 제공하는 Publish-Subscription 메시징 시스템 Publish-Subscription : producer가 생성한 data를 저장하는 메시지 큐를 두어 producer와 consumer가 독립적으로 실행될 수 있도록 진행 → 시스템의 안정성을 높이고 다수의 consumer가 ..
항공권 정보를 3일에 한번씩 크롤링하여 snowflake 테이블에 적재하는 파이프라인을 만들어보고자 한다. 📌DAG Task 정의데이터 크롤링 및 CSV 저장 (E & T)S3 적재 (L)Snowflake 테이블에 적재 (L) 위와 같이 총 3가지의 task로 구성된 DAG를 작성하려 한다. 각 task는 순차적으로 진행되며 데이터 크롤링 및 csv 저장 → s3 버킷 적재 → Snowflake 테이블 적재 순으로 진행된다. 📌Snowflake 테이블 스키마 정의프로젝트 기간이 여유롭지 못한 탓에 데이터 크롤링 시에 팀원들과 정했던 규칙이 있었다. Snowflake 테이블 스키마를 구성함에 있어서도 다음과 같이 정했던 규칙을 기반으로 구성했다.출발지는 무조건 인천(INC)편도만 취급항공권 가격, ..
Airflow란?파이썬으로 작성된 데이터 파이프라인 (ETL) 프레임워크 다양한 데이터 소스와 데이터 웨어하우스를 쉽게 통합해주는 오퍼레이터의 역할을 함 airbnb에서 시작한 아파치 오픈소스 프로젝트이자 가장 많이 사용되는 데이터 파이프라인 관리 작성 프레임워크데이터 파이프라인 스케줄링 지원 및 웹 UI 제공 Airflow 구성총 다섯 개의 컴포넌트로 구성웹 서버 Flask로 구성 DAG를 워커에게 배정하는 역할을 수행 웹 UI를 통해 스케줄러 및 DAG의 상황을 시각화 스케줄러 - 데이터 파이프라인 실행 및 파이프라인 트리거 실행 (master 역할)워커 - 실제 task를 실행하는 노드, airflow의 scaling = 워커 노드의 수를 ↑메타 데이터 데이터베이스 - 스케일링, 워커, 파이프라인의..
🪣S3버킷과 SnowFlake 연동하기 🪣S3 버킷 생성 + 데이터 업로드아래와 같이 간단하게 yr-s3-project라는 이름을 갖는 bucket을 생성하였다. S3 > 생성한 버킷 > 권한 > 버킷 정책에서 편집을 눌러 버킷에 대한 정책을 설정해준다.select type of policy를 s3 bucket policy로 설정effect를 allow로 설정principal *로 설정버킷에 대해 허용할 action으로 putObject하나만 설정arn을 복사하여 붙인 후, /* 을 덧붙임 add Statement로 상태를 추가하고 Generate Policy를 선택하여 정책을 생성한 뒤, 생성된 정책을 버킷 정책에 붙여 넣는다. 사실 뭔가 필요 없는 것 같은데 공부할 겸 해봄 ㅋ 생성한 버킷에 파..
데이터 집계 시간을 단축하기 위해 사용하는 방법에는 2가지가 있다. 데이터가 작을 경우, 데이터를 모두 메모리에 올리는 방법압축과 분산을 통해서 지연을 줄이는 방법 1. 압축 - 열 지향 데이터베이스 vs 행 지향 데이터베이스 우리가 잘 알고 사용하는 RDB는 행 지향 데이터베이스로 데이터를 행 단위로 추가하며, 레코드 단위의 읽고 쓰기에 최적화 되어 있다. 행 지향 데이터베이스에서는 데이터 검색을 고속화하기 위해 인덱스를 사용한다. 행 지향 데이터베이스의 경우 레코드 단위로 데이터가 저장되므로 특정 쿼리에서는 행의 모든 데이터가 필요하지 않는 경우가 종종 생기게 된다. 이런 행 지향 데이터베이스의 경우, 쓰기 작업이 작은 I/O 데이터 분석 작업에는 유용하나, 데이터가 많은 분석 환경에서는 집계에..