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..
[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 형을 추천했지만 정작 완벽하게 이유를 설명하지는 못했던 것 같다. 차후에 이러한 대화가 다시 생길 땐 적어도 더 ..
원격 개발 환경 구성 1. 개발용 VM 세팅(feat. 오라클)
2021. 10. 6. 20:19
Data/Data Engineering
원격 개발 환경 구성 1. 개발용 VM 세팅(feat. 오라클) I. 개요 데이터 분석과 기초 개발이나 모델링을 위해 노트북 2대를 이용 중이며 이번에 아이패드 1대를 추가로 구매하였습니다. 작업한 모든 결과물은 GIT을 이용하여 관리하며 개인 개발 및 공부용(개인 계정)과 업무용(회사 계정)을 사용 중입니다. 위 두 가지 사유로 아래와 같은 문제와 스트레스가 반복됩니다. 기기를 옮겨갈 때마다 매번 로컬 환경을 새로고침(pull) 할 필요가 있음 이 과정에서 잘못된 계정으로 push/pull 하는 경우가 생기기도 함 새로운 기기를 구매하거나, 기존 기기에 문제가 생기면 일련의 개발 환경 세팅을 매번 새롭게 해주어야 함 외출 등의 이유로 기기의 접근할 수 없어 빠르게 대응하지 못하는 상황들이 종종 존재 이..
[Dagster/Orchestrator] Airflow를 이길수있을까? 새로운 data orchestrator, Dagster 맛보기
2021. 5. 22. 18:24
Data/Data Engineering
Dagster 대시보드를 업데이트하거나, 파이프라인을 꽂아 데이터를 추출 및 적재해야하는 상황 또는 모델의 학습과 데이터 전처리 자동화 등 정기적으로 수행해야하는 업무들이 있습니다. 이러한 일들은 꼭 필요한 작업이지만 매번 사람이 직접 수행하기 어려운 경우가 많습니다. 우리는 이러한 일들을 여러 툴을 사용해 자동화 시키곤 하는데, 이때 가장 자주 사용되는 것이 Airflow 입니다. airflow는 python 기반으로 작성이 가능하다는 점에서 데이터 분석가도 쉽게 사용할 수 있는 장점이 있으며, 방대한 생태계와 잘 정리된 문서로 쉽게 도움을 받을 수 있다는 장점이 있습니다. 또한 나름 괜찮은 UI를 제공하고 있기도 합니다. 이러한 사유로 여태껏 airflow는 워크플로엔진의 탑티어로 군림하고 있으며 어..
[Python/NLP]WikiExtractor를 이용한 위키덤프(Wiki dump)파싱 for Mac/window
2020. 1. 23. 20:32
Data/Data Engineering
기초적인 자연어 처리를 위해 데이터를 수집하는 경우 신문기사와 더불어 위키 덤프(wiki dump)를 많이 활용합니다. 오늘은 위키덤프를 다운로드 받고 파싱하여 txt형태로 저장하는 방법을 소개합니다. 1. 한글 위키 덤프 파일 다운로드 아래 링크를 통해 내용만 담긴 가장 최신 데이터를 받으실 수 있습니다. http://dumps.wikimedia.org/kowiki/latest/kowiki-latest-pages-articles.xml.bz2 다른 한글 위키 덤프 파일의 경우 아래 링크에서 받으실 수 있습니다. https://ko.wikipedia.org/wiki/%EC%9C%84%ED%82%A4%EB%B0%B1%EA%B3%BC:%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9..