분류 전체보기 1188

[Airflow] chain - Task 간 의존성 설정

개요 2022.08.03 - [Airflow] Task 간 의존성 설정에서 시프트 연산자와 set_downstream, set_upstream 함수를 이용한 방법을 정리했다. 추가로 chain 함수를 이용한 의존성 설정에 대해 정리한다. chain 주어진 여러 개의 task에 대한 의존성 체인을 만든다. chain(*tasks) chain 함수는 tasks, Labels, XComArg, TaskGroups, 그리고 이러한 유형을 원소로 하는 리스트를 매개변수로 받을 수 있다. 모듈 임포트 아래와 같이 임포트 하여 사용할 수 있다. from airflow.models.baseoperator import chain 사용 예 테스트 DAG 코드는 접은 글로 작성해 둔다. 더보기 Code from dateti..

Apache Airflow 2023.04.13

[Airflow] Task 반복 생성

개요 Airflow DAG는 Python 코드로 정의되기 때문에 반복문을 이용해 task를 생성할 수 있다. 이를 이용하면 매개변수나 설정값만 다른 같은 작업을 Task 내에서 실행하지 않고, 각 Task로 정의하여 실행할 수 있다. 예제로 정리한다. 예제 DAG 아래 코드는 반복문을 이용해 task를 정의한다. from datetime import datetime, timedelta from time import sleep from airflow import DAG from airflow.operators.python import PythonOperator def dump(): sleep(3) dag_args = { "owner": "airflow", "retries": 1, "retry_delay":..

Apache Airflow 2023.04.12

[PostgreSQL] psql - 메타 명령어

메타 명령어 PostgreSQL 클라이언트인 psql은 데이터베이스 관리 및 스크립트 작성에 유용한 메타 명령어를 제공한다. 백슬래시(\)로 시작하기 때문에 슬래시 명령, 백슬래시 명령이라고 부르기도 한다. 이 글에서는 자주 사용하는 메타 명령을 정리한다. 데이터베이스 목록 확인 서버 내 데이터베이스 이름, 소유자, 캐릭터 셋, 접근 권한을 출력한다. \l[+] or \list[+] [ pattern ] 명령에 +를 추가하면 데이터베이스의 용량, 기본 테이블스페이스와 설명도 출력된다. 용량 정보는 사용자가 연결할 수 있는 데이터베이스만 표기된다. 데이터베이스 연결 선택한 데이터베이스에 접속한다. 데이터베이스 접속 시 접속할 사용자 정보를 지정할 수 있다. \c or \connect [ -reuse-pre..

Database 2023.04.11

[Docker] 컨테이너 시작/중지/재시작

개요 Docker로 PostgreSQL을 사용하고 있는데, 서버를 자주 끄고 켜다 보니 사용할 컨테이너가 중지 상태로 남아있다. 데이터베이스이므로 기존 컨테이너를 계속 사용하기 위해 컨테이너를 재시작하는 방법을 적어둔다. 컨테이너 시작 중지된 컨테이너를 시작한다. docker start [OPTIONS] CONTAINER [CONTAINER...] 컨테이너 재시작 컨테이너를 재시작한다. docker restart [OPTIONS] CONTAINER [CONTAINER...] 컨테이너 중지 실행 중인 컨테이너를 중지한다. docker stop [OPTIONS] CONTAINER [CONTAINER...] 참고 문서 https://blog.naver.com/foxrain93/220663874441 https..

Docker 2023.04.10

[Airflow] LocalExecutor - Task 병렬 실행

개요 2022.12.13 - [Airflow] Executor Airflow는 기본적으로 작업을 순차적으로 실행하는 SequentialExecutor를 사용한다. 하지만 task 병렬 실행을 지원하지 않아 운영 환경에서는 적합하지 않아 Airflow 공식 문서에서도 변경하여 사용하도록 권장하고 있다. 이 글에서는 task를 병렬 실행할 수 있는 LocalExecutor를 사용한다. 기본값인 SequentialExecutor를 사용할 때와 어떻게 동작이 다른 지도 살펴본다. 테스트 DAG 먼저 task가 병렬로 나열된 DAG를 작성한다. from datetime import datetime, timedelta from time import sleep from airflow import DAG from ai..

Apache Airflow 2023.04.09

[Airflow] Meta DB로 PostgreSQL 연결

개요 Airflow는 기본적으로 Meta DB로 SQLite를 사용한다. 하지만 SQLite는 동시 접속이 불가능해 운영환경에는 적합하지 않아 공식문서에서도 변경하여 사용하기를 권장하고 있다. 보통 PostgreSQL과 MySQL을 사용하는 것 같은데, MySQL보다는 PostgreSQL이 Airflow와 좀 더 잘 맞는다고 한다. 이 글에서는 Airflow Meta DB를 PostgreSQL로 설정해보려고 한다. Airflow는 이미 설치되어 있다고 가정한다. - 2022.07.22 - [Apache Airflow] 설치 / 실행 (버전 2.3) PostgreSQL 설치 2023.04.04 - [Ubuntu] PostgreSQL 설치 및 실행을 작성했었는데…… 해결되지 않는 오류가 발생해서 Docker..

Apache Airflow 2023.04.08

[Ubuntu/PostgreSQL] 서버 원격 접속 허용

개요 PostgreSQL도 MySQL과 동일하게 기본적으로 localhost 접속만을 허용한다. (사실 거의 대부분의 애플리케이션이 그런 것 같다.) 2023.03.25 - [MySQL/MariaDB] 서버 원격 접속 허용 때와 마찬가지로 PostgreSQL 원격 접속 설정 방법을 정리해 둔다. Ubuntu 20.04 LTS, PostgreSQL 12 버전 기준으로 정리한다. Listen Address 설정 기본적인 PostgreSQL 파라미터 설정 파일인 postgresql.conf을 변경한다. 경로는 아래와 같다. /etc/postgresql//main/postgresql.conf 확인하면 listen_addresses 값이 주석 처리되어 있는 것을 확인할 수 있다. 주석을 해제하고 아래와 같이 설정..

Database 2023.04.07

[Airflow] Meta DB로 MySQL 연결

개요 Airflow는 기본적으로 Meta DB로 SQLite를 사용한다. 하지만 SQLite는 동시 접속이 불가능해 운영환경에는 적합하지 않아 공식문서에서도 변경하여 사용하기를 권장하고 있다. 보통 PostgreSQL과 MySQL을 사용하는 것 같은데, 이 글에서는 MySQL을 연결한다. Airflow와 MySQL은 이미 설치되어 있다고 가정한다. MySQL 설정 Airflow가 사용할 데이터베이스와 서비스 계정을 생성한다. 데이터베이스 생성 CREATE DATABASE airflow CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 서비스 계정 생성 CREATE USER 'airflow' IDENTIFIED BY 'airflow1234'; GRANT ALL PRI..

Apache Airflow 2023.04.06

[Python] Pandas - read_csv 컬럼 타입 지정

개요 Pandas.read_csv 함수를 이용해 CSV 파일을 읽어 들이면 데이터의 타입을 추론하여 DataFrame을 생성한다. 그러다 보니 간혹 문자열로 저장한 네 자리 숫자의 형식이나 소수점 둘째 자리 등의 자릿수가 휘발될 때가 있다. 예시 코드 import numpy as np import pandas as pd map_code_message = [ {'code':'00','return_message':'Continue'}, {'code':'01','return_message':'Switching Protocol'}, {'code':'02','return_message':'Processing'}, {'code':'03','return_message':'Early Hints'}, ] df = pd...

[Ubuntu] PostgreSQL 설치 및 실행

PostgreSQL 오픈 소스 객체 관계형 데이터베이스 관리 시스템 (object-relational database management system; ORDBMS). 미국 캘리포니아에 있는 버클리 대학 컴퓨터 과학부에서 개발한 POSTGRES, Version 4.2를 기반으로 개발되었다. 북미와 일본에서 인지도가 높은 데이터베이스 시스템으로 기능적인 면에서는 Oracle과 유사한 점이 많다. 유연한 객체 생성, 상속, 함수를 지원하는 것이 특징이다. 포스트그레스큐엘로 발음하면 된다. 이전에는 Postgres라고 불렀지만 표준 SQL을 지원하면서 이름에 SQL을 덧붙인 것으로 공식적인 명칭은 post-ingres 데이터베이스다. 💡 객체 관계형 데이터베이스 관리 시스템 (ORDBMS) 객체지향 데이터베이..

Database 2023.04.04