분류 전체보기 1188

[Airflow] @task를 이용한 Task 선언

Task 선언 2023.04.22 - [Airflow] with, @dag를 이용한 DAG 선언에서 데코레이터를 이용해 DAG를 생성하는 방법을 살펴봤는데, Task도 데코레이터를 이용해 선언할 수 있다. 다만 지금은 Python, SQL 함수에만 사용할 수 있는 것 같다. 이 글에서는 표준 생성자를 이용해 task가 선언된 DAG를 데코레이터를 이용해 task를 선언해 본다. 기존 선언 방식 기존에는 Task도 표준 생성자를 이용해 선언했다. from datetime import datetime, timedelta from airflow.decorators import dag from airflow.operators.python import PythonOperator from airflow.operat..

Apache Airflow 2023.04.23

[Airflow] with, @dag를 이용한 DAG 선언

DAG 선언 DAG를 선언하는 방법은 세 가지가 있다. 이 블로그에서는 주로 표준 생성자를 사용하여 생성하는데 from datetime import datetime, timedelta from airflow import DAG from airflow.operators.empty import EmptyOperator dag_args = { "owner": "airflow", "retries": 1, "retry_delay": timedelta(minutes=1), } dag = DAG( dag_id="dag_create_test_with", default_args=dag_args, start_date=datetime(2022, 1, 20), schedule_interval="@once", ) t1 = Em..

Apache Airflow 2023.04.22

[Linux] ps -ef VS ps aux

개요 보통 프로세스 정보를 확인할 때 ps -ef를 주로 사용한다. 최근 Python으로 프로세스 모니터링 방법을 확인하는데 ps aux 명령어를 추천하는 글을 봤는데 두 명령어 옵션에 차이가 있는지 정리한다. ps -ef linux 매뉴얼에 따르면 표준 구문, UNIX을 이용해 시스템 상의 모든 프로세스를 확인할 때는 아래의 명령어를 제시하고 있다. ps -e ps -ef ps -eF ps -ely 각 옵션은 다음과 같다. -e : 모든 프로세스를 선택한다. -A와 동일하다. -f : 목록을 full format으로 출력한다. -F : 목록을 full format으로 출력한다. -f와 동일하다. -l : 목록을 long format으로 출력한다. -y : 플래그를 표시하지 않고, ADDR 대신 RSS(..

Linux 2023.04.21

[Python] globals() - 전역 변수 확인 및 설정

개요 2022.10.01 - [Python] 전역/지역 변수와 범위에서 전역변수와 지역변수에 대해 간단히 정리했다. 이 글에서는 특정 모듈 내에서 사용되는 전역 변수를 확인하고 설정하는 방법을 정리한다. globals() Python 내장 함수 중 하나로, 현재 모듈에서 사용하는 전역 변수의 이름과 값으로 이루어진 Dictionary를 반환한다. 예로 들어 아래와 같이 test 함수 내에 지역 변수 a, b가 정의되어 있고, 전역 변수로 c, b가 정의되어 있는 경우 globals 함수의 출력을 살펴본다. def test(): a = 1 b = 2 test() c = 3 b = 4 print ("Global Variables in this module") print (globals()) 실행 결과 Glo..

Python 2023.04.20

[Airflow] Variables를 이용한 동적 DAG 생성

개요 2023.04.15 - [Airflow] Variables - 설정/사용에서 Airflow에서 사용할 전역 변수를 정의하고 사용했다. 이 글에서는 설정한 전역변수를 이용해 동적으로 DAG를 생성한다. 즉, Variables로 설정한 값 목록을 매개변수로 사용해 하나의 DAG 정의 파일로 여러 DAG를 생성해 본다. Variables 설정 2023.04.15 - [Airflow] Variables - 설정/사용을 참조하여 설정한다. 이 글에서는 list_dags라는 키로 dag_id가 될 값들을 개행문자로 구분하여 정의했다. DAG 정의 파일 작성 간단히 dag_id를 출력하는 DAG를 예시로 작성한다. DAG 정의부 Variables에 정의된 list_dags를 이용하기 좋게 DAG와 TASK 정의..

Apache Airflow 2023.04.19

[Git] Detached HEAD란

개요 어느 날, Git 레포지터리 변경 사항이 원격 레포지터리로 push 되지 않아 확인해 보니 아래와 같은 상태였다……. 아무래도 레포지터리가 브랜치를 가키리는 게 아닌 것 같은데, 관련해서 알아본다. Detached HEAD란 Git에서 HEAD는 현재 checkout한 commit을 참조한다. 일반적으로 master, main과 같이 이름이 붙은 branch를 참조한다. 그리고 branch는 특정 commit을 참조한다. 이렇게 HEAD -> branch - commit 순으로 commit을 참조하는 상태를 attached HEAD 상태라고 한다. 반면 Detached HEAD란 HEAD가 branch를 통해 commit을 참조하는 상태가 아니라, 직접 commit을 참조하는 상태를 말한다. Det..

Git | GitLab 2023.04.18

[Python] OpenAI API 사용하기

개요 최근 OpenAI가 개발한 ChatGPT가 굉장히 화제가 되고 있는데, 이 글에서는 Python과 OpenAI API를 이용해 ChatGPT와 대화하는 간단한 프로그램을 작성해보려고 한다. openai 계정이 필요하므로 회원가입부터 진행한다. 회원가입/로그인 https://platform.openai.com/에 접속하여 회원가입 또는 로그인한다. 회원가입 시 전화번호 인증이 필요하다. 크레딧 확인 API를 호출할 때마다 비용이 발생한다. 회원가입을 하면 무료 크레딧이 기본적으로 부여된다. 부여된 크레딧은 오른쪽 상단 Personal > Manage account로 이동하여 확인할 수 있다. API 키 발급 오른쪽 상단 Personal > View API keys로 접근하여 API를 호출할 때 사용할..

기타 2023.04.17

[Python] 객체 속성 관련 함수

개요 이번 글에서는 Python에서 객체의 속성을 다룰 때 사용하는 setattr, getattr, hasattr, delattr 함수에 대해 정리한다. 예시 클래스 및 객체는 아래와 같이 사용한다. class Person: name = 'Adam' p = Person() print(p.name) setattr 객체에 속성을 설정한다. 설정하고자 하는 값이 객체에 없다면 속성을 추가하고 값을 할당한다. 반환 값은 없다. setattr(object, attribute_name, value) 예시) class Person: name = 'Adam' p = Person() setattr(p, 'name', 'James') setattr(p, 'age', 20) print(p.name, p.age getattr..

Python 2023.04.16

[Airflow] Variables - 설정/사용

Variables Airflow에서 전역적으로 사용할 값을 미리 정의해 두고 공통적으로 사용할 변수를 뜻한다. Airflow Web UI를 통해 정의하거나 JSON 파일을 이용해 대량으로 업로드할 수 있다. 이 글에서는 Variables를 정의하고 사용하는 방법을 정리한다. Variables 설정 1. 상단 메뉴에서 Admin > Variables로 접근 2. +(Add a new record) 버튼 클릭 3. Variable의 키와 값 지정 후 Save 버튼 클릭 값은 텍스트, JSON 등 관계없이 지정할 수 있는 것 같다. 4. 설정값 확인 값이 잘 설정된 것을 확인할 수 있다. 접근 1. airflow.models.Variable import Airflow에 설정된 Variables에 접근하기 위해..

Apache Airflow 2023.04.15

[Airflow] 버전 업그레이드

개요 현재 테스트 서버에 설치되어 있는 Airflow 버전은 2.3.2이고, 2023년 3월 28일 기준 Airflow 최신 버전은 2.5.2이다. 사용하고 있는 버전도 비교적 최신 버전이지만, 아예 최신 안정 버전으로 업그레이드를 해보려고 한다. 방법을 정리한다. 환경 정보 AWS EC2 단일 노드 python 3.8 pip를 통한 설치 META DB : postgreSQL (Docker) LocalExecutor ❗ 운영 환경에서 작업하지 않은 글이므로 참고만 할 것을 당부한다. ❗ 데이터 백업 문제 상황을 대비해 Airflow 관련 데이터를 백업한다. 백업할 사항은 아래 부분 정도가 될 것 같다. Python 패키지 버전 정보 pip freeze > airflow_requirements.txt Ai..

Apache Airflow 2023.04.14