전체 글 45

[AIRFLOW] simple_bash 파이프라인 만들기 실습

DAG이 실제로 작업을 수행하기 위해서는 태스크 정의를 해야한다. 하나의 테스크들이 모여 하나의 DAG을 구성하고, DAG들이 모여 workflow가 이루어진다.  Airflow 태스크의 특징은 항상 멱등성을 가지고 있다는 점이다. Airflow에서는 사용자가 수행작업을 clear 하고 태스크를 다시 실행하는 경우가 많은데, 동일한 태스크를 여러번 실행해도 결과는 동일해야한다. 다시 돌아와서, simple_bash 파이프라인에서는 1~8 단계의 task가 존재한다.  1. start2. print_date3. copy.log  에러가 발생시, error report 단계를 거쳐 end 단계로 이동.4. cut.log5. sort.log6. count.log7. make.done8. end 1. start..

[AIRFLOW] DAG 코드 기본 구조 (Operator, trigger rule)

1. AIR FLOW DAG 코드 기본 구조(1) Import Statements : 필요한 모듈 importfrom airflow import DAG #Airflow에서 DAG(Directed Acyclic Graph)를 정의하기 위해 사용되는 클래스from airflow.operators.bash import BashOperator #Bash 명령을 실행하기 위한 Operatorfrom airflow.operators.empty import EmptyOperator #아무 작업도 수행하지 않는, 주로 흐름 제어에 사용되는 Operatorfrom datetime import datetime, timedelta #날짜와 시간을 다루기 위한 Python의 내장 모듈 (2) DAG 선언 및 Default A..

[AIRFLOW] jinja template

Jinja template문서(파일)에서 특정 양식으로 작성된 값을 런타임 시 실제 값으로 치환해주는 처리 엔진템플릿 엔진은 여러 솔루션이 존재하며 그 중 Jinja 템플릿은 파이썬 언어에서 사용하는 엔진오퍼레이터 파라미터 입력하는 곳에 중괄호 '{ }' 를 2개 이용하면 Airflow에서 기본적으로 제공하는 변수 (ex: 수행 날짜, DAG_ID) 들을 치환된 값으로 입력할 수 있다https://airflow.apache.org/docs/apache-airflow/stable/templates-ref.html Templates reference — Airflow Documentation airflow.apache.org 1) 날짜 형식에 대한 여러 유형의 축약 매개변수 task_date = Bas..

플레이데이터 데이터 엔지니어링 32기 7월 3주차 회고록

FACTSPDM, 첫 번째 팀 프로젝트 mo-cmd (PDM add, sub, div calculate package)airflow 시작하기airflow simple_bash 파이프라인 airflow import_db 파이프라인 (진행 중)GIT 특강 (주말)1. PDM1) pyenv를 이용한 python 버전관리 https://oddsummer.tistory.com/7 pyenv를 이용한 여러 개의 Python 버전 관리1. 개요 pyenv는 다양한 버전의 파이썬을 관리하는 도구이다.프로젝트 별로 다양한 버전의 파이썬을 이용해야할 때가 있는데, 이때 pyenv를 이용하면 버전관리를 쉽게 할 수 있다. 우선순위는 shelloddsummer.tistory.com프로젝트 별로 다양한 버전의 파이썬을 이용해야..

[Git] Git 특강

1. Git, Github Intro1) 깃이 없다면?변경 내역 확인 어려움 : 변경사항이 적용된 파일을 제목을 변경해서 모두 저장하면 되지 않느냐? → 스토리지 비효율작업 되돌리기 어렵다협력하기 어렵다 : git을 이용하면 나와 무관한 부분 신경쓰지 않고, 같은 부분을 다르게 수정한 부분만 확인하면 됨. 2) git의 필요성 → 버전을 관리하기 위한 도구 변경 사항(버전)을 조금 더 일목요연하게 관리해보자!버전? 유의미한 변화가 결과물로 나온 것 (새 기능 추가, 버그 수정, 기존 기능 삭제 등)프로그램 개발 == 버전을 쌓아 프로그램을 만들어나가는 것 버전관리변경내역 기억필요하면 작업을 되돌리며여러명을 코드를 쉽게 나누고 합치며 개발하는 것 3) 깃허브 (원격 저장소 호스팅 서비스) 원격 / 저장소 ..

[AIRFLOW] Airflow 기본개념, 설치 및 실행

AIRFLOW?Apache Airflow는 데이터 파이프라인을 작성, 스케줄링 및 모니터링하기 위한 플랫폼이다. 복잡한 데이터 처리 작업을 워크플로우로 정의하고 관리할 수 있도록 도와준다. 주요 기능은 다음과 같다워크플로우 정의: 워크플로우를 DAG(Directed Acyclic Graph) 형식으로 정의. DAG는 작업(task)들의 모음이며, 각 작업의 의존 관계를 나타낸다.스케줄링: DAG 및 각 작업을 특정 시간 또는 주기로 실행하도록 스케줄링할 수 있다.모니터링 및 관리: 웹 인터페이스를 통해 실행 중인 워크플로우를 모니터링하고, 로그를 확인하며, 작업의 상태를 파악할 수 있다.확장성: 분산 실행을 지원하여 많은 양의 작업을 처리할 수 있다.유연성: Python 코드로 워크플로우를 정의하기 때문..

플레이데이터 데이터 엔지니어링 32기 7월 2주차 회고록

FACTSLinux 환경 설정AWS 접속git SQL데이터 파이프라인1. LINUX대부분의 서버가 리눅스로 운영되기 때문에 첫 시간의 기초부터 리눅스를 배웠다.윈도우에서 리눅스를 실행하기 위해 본 강의에서는 WSL을 사용했다. 설치하는 과정과 발생한 트러블 슈팅은 다음과 같다.1) 리눅스 설치 과정에서 발생한 트러블 슈팅https://oddsummer.tistory.com/1 [LINUX] WSL로 윈도우에 Linux 설치 (하위 시스템에는 설치된 배포판이 없습니다, 0x8004032d 오류 해결)1. wsl로 리눅스 설치하기https://learn.microsoft.com/ko-kr/windows/wsl/install WSL 설치wsl --install 명령을 사용하여 Linux용 Windows 하위 ..

PDM을 이용한 파이썬 패키지, 의존성 관리

PDM은 파이썬 의존성 관리 도구이다. 프로젝트 설정, 종속 항목 관리, 배포 아티팩트 빌드를 위한 단일 인터페이스를 제공한다. 또한 패키지를 프로젝트에 로컬로 저장하기 위해 PEP 582 표준을 사용한다. 이는 각 프로젝트마다 독립적인 패키지 설치 및 관리를 가능케하여 프로젝트별 가상 환경을 만들 필요가 없다.1. 설치# PDM 설치$ curl -sSL https://pdm.fming.dev/install-pdm.py | python3 -# 환경변수 등록$ export PATH=/home/oddsummer/.local/bin:$PATH pyenv 포스팅에서와 마찬가지로 zsh 쉘을 사용하기 때문에, 부팅시 활성화 하기 위해 .zshrc 맨 아래에 추가해뒀다.  2. PDM 실행# 새로운 프로젝트 초기 ..

pyenv를 이용한 여러 개의 Python 버전 관리

1. 개요 pyenv는 다양한 버전의 파이썬을 관리하는 도구이다.프로젝트 별로 다양한 버전의 파이썬을 이용해야할 때가 있는데, 이때 pyenv를 이용하면 버전관리를 쉽게 할 수 있다. 우선순위는 shell > local > gloabal > system 순이다. system은 os에 설치되어 제공되는 파이썬이며, 모든 사용자가 사용 가능하다.2. 설치 (UNIX 기준)UNIX 환경에서 설치했다. 윈도우 버전도 들어가보면 잘 나와있다. https://github.com/pyenv/pyenv?tab=readme-ov-file#automatic-installer GitHub - pyenv/pyenv: Simple Python version managementSimple Python version managem..

[Git] Markdown

1. 헤더1) 큰제목 : 문서제목This is H1========== 2) 작은제목 : 문서 부제목This is H2---------- 3) 글머리 : 1~6까지 지원# This is a H1## This is a H2### This is a H3#### This is a H4##### This is a H5###### This is a H6 2. 코드 블럭`````` 3. 링크1) url 링크일반적인 URL 혹은 이메일주소인 경우 적절한 형식으로 링크를 형성한다.* 이메일링크:  2) 인라인링크사용문법: [링크이름](링크)적용예: [Google](https://google.com, "google link") 4. 체크박스- [ ] [] 사이에 한 칸 띄워주기!! 5. 폰트__bold__**bold**_..