Airflow(GCP Composer) 에서 KubernetesPodOperator 사용
2023. 4. 23. 13:27
Data/Data Engineering
Airflow(Google Composer2) 를 활용해 워크플로우 오케스트레이션을 하고 있습니다. 최근 사내 파이프라인에 DBT 를 도입하다보니 composer 2의 기본 패키지 의존성과 DBT의 패키지 의존성간에 충돌이 있기에 컨테이너 기반으로 DBT 를 활용하도록 KubernetesPodOperator를 고려하였습니다. 본 문서는 비공개 환경의 k8s(GKE) 기반 airflow(GCP Composer)에서 KubernetesPodOperator를 사용하는 방법에 대해 안내합니다. 참고로 composer 1 과 composer2 에서 사용 설정이 일부 상이합니다. 본 문서는 autopilot 으로 관리되는 composer2 환경에서 KubernetesPodOperator 사용법을 설명합니다. 환경 ..
Airflow 사용 시 AssertionError: daemonic processes are not allowed to have children 의 해결
2022. 10. 10. 23:37
Data/Data Engineering
현상 파악 Airflow 2.0 버전 대에서 concurrent.futures.ProcessPoolExecutor 사용 시 AssertionError: daemonic processes are not allowed to have children 에러를 경험하였다. (local , celery, kubernates 모두 같은 현상을 재현할 수 있었음 ) 리서치 결과 정확히는 multiprocessing 패키지에서 발생하는 문제라는 것을 알 수 있었다. concurrent.futures python 작업 시 multiprocessing이나 multithread 작업을 위해 자주 사용하는 패키지로 사진의 에러를 발생시킨 것은 ProcessPoolExecutor 사용 시 경험했다. 이 ProcessPoolExe..
[RL] 마로코프 의사 결정 과정
2022. 9. 9. 22:27
Data/ML
강화 학습이란 인공지능 학습의 방법론인 머신러닝(ML)의 한 계통으로 일반적인 지도 학습과 비지도 학습과는 다른 계통의 학문으로 DP(dymamic programming), MDP(markov decison process)와 같은 개념에 뿌리를 두고 있다. 일반적으로 AI 의 발전은 단순한 계산(computing) 이 아니라 판단(estimation), 의사결정(decison), 창작(creation)을 기계가 행하도록 기대하는 행위인데, 강화 학습은 특히 의사결정(decison)에 집중한다. 지도 학습 데이터와 레이블의 쌍이 주어지면 기계가 새로운 데이터에 레이블을 붙이는 방법을 학습하는 것 즉 문제와 정답을 제공하고, 새로운 문제가 등장하면 "판단"하게 만들고자 함 대부분의 회귀모델 CNN과 같은 방..
[Airflow] 자주 쓰는 Branch Task
2022. 7. 21. 13:05
Data/Data Engineering
I. 개요 일련의 작업 진행 시 상황에 따라 다른 작업으로 이어져야 하는 경우는 굉장히 빈번하게 발생한다. Airflow 는 기본적으로 DAG 으로 작업을 구조화해서 작업을 진행하기 때문에, 자동화할 때 이러한 조건부 작업을 구현하지 못한다면 매번 실패 후 재처리하는 작업이 필요하다. 기본적이지만 자주 사용되는 Branch task 인 BranchPythonOperator 와 BranchSQLOperator 의 사용법과 예제를 기록해둔다. II. Branch Task 1. BranchPythonOperator PythonOperator 기반으로 구성되어 task_id(s) 를 output 으로 하는 Python callable 을 통해 바로 다음에 이어지는 작업 요소를 결정한다. BranchPythonO..
우리는 PK 에 왜 int 형 데이터를 고집할까
2022. 4. 21. 19:43
Data/Data Engineering
우리는 PK 에 왜 int 형 데이터를 고집할까 최근에는 분석용 DB는 Bigquery 나 Snowflake, Redshift 등을 많이 쓰는 것으로 보이나 운영용 DB(원천 DB)는 여전히 Aurora, RDS 또는 자체 서버를 구축하여 사용하는 경우가 많다고 생각한다. 데이터 인프라나 DB 관련 얘기를 나누다 보면 “Server 에서 생성하는 unique ID(nchar) 값을 PK로 잡아 저장하는 게 데이터 분석가 입장에선 훨씬 편할 텐데 굳이 운영 DB에 int type id(idx) 컬럼을 만들어 PK를 따로 잡아야 할까요?”라는 질문을 받곤 한다. 이러한 주제가 나올 때마다 int 형을 추천했지만 정작 완벽하게 이유를 설명하지는 못했던 것 같다. 차후에 이러한 대화가 다시 생길 땐 적어도 더 ..
Opt in Rate 을 늘리기 위한 노력
2021. 12. 1. 12:53
Data/Data Analysis
I. Opt in rate 이란? Opt in view는 사진과 같이 어떠한 서비스를 제공하기 전에 "구독/가입"을 유도하고, 사용자의 정보를 요청하는 모든 view를 말한다. Opt in Rate 은 이러한 목적의 view 노출 유저 중 실제 동의한 유저의 비율을 나타낸다. Opt in view 는 주로 Web based 인 경우가 많은데, App based로 오는 경우 마케팅 수신 동의 , 광고성 정보 수신 동의가 이에 해당한다. 종합하여 정리하면 "서비스 가입이나 가입 유도(적극적) 또는 서비스에 관한 정보를 제공할 수 있는 동의(소극적)를 얻고자 하는 목적의 모든 화면"과 "해당 화면에서 동의한 유저의 비율"을 말한다. II. Opt in rate의 중요성 Opt in view 는 데이터 분석가에..
원격 개발 환경 구성 1. 개발용 VM 세팅(feat. 오라클)
2021. 10. 6. 20:19
Data/Data Engineering
원격 개발 환경 구성 1. 개발용 VM 세팅(feat. 오라클) I. 개요 데이터 분석과 기초 개발이나 모델링을 위해 노트북 2대를 이용 중이며 이번에 아이패드 1대를 추가로 구매하였습니다. 작업한 모든 결과물은 GIT을 이용하여 관리하며 개인 개발 및 공부용(개인 계정)과 업무용(회사 계정)을 사용 중입니다. 위 두 가지 사유로 아래와 같은 문제와 스트레스가 반복됩니다. 기기를 옮겨갈 때마다 매번 로컬 환경을 새로고침(pull) 할 필요가 있음 이 과정에서 잘못된 계정으로 push/pull 하는 경우가 생기기도 함 새로운 기기를 구매하거나, 기존 기기에 문제가 생기면 일련의 개발 환경 세팅을 매번 새롭게 해주어야 함 외출 등의 이유로 기기의 접근할 수 없어 빠르게 대응하지 못하는 상황들이 종종 존재 이..