일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- subdag
- Counterfactual Explanations
- requests
- correlation
- API Gateway
- flask
- top_k
- grad-cam
- youtube data
- hadoop
- Airflow
- spark udf
- 유튜브 API
- 상관관계
- BigQuery
- integrated gradient
- airflow subdag
- API
- UDF
- tensorflow text
- GenericGBQException
- session 유지
- GCP
- Retry
- TensorFlow
- gather_nd
- 공분산
- chatGPT
- XAI
- login crawling
- Today
- Total
목록DevOps (28)
데이터과학 삼학년
Apache Airflow에서는 각 태스크(task)에 대한 retry 및 timedelta를 개별적으로 설정 가능 retry 및 timedelta는 DAG(Directed Acyclic Graph)에 정의된 각 태스크의 default_args 속성에서 설정 default_args 속성에는 모든 DAG 및 해당 태스크에 적용되는 기본 인수가 포함되는 형태인데, task안에서 오버라이딩(?) 하듯이 default_args를 재정의 해주면 됨~!!! from datetime import timedelta from airflow import DAG from airflow.operators.python_operator import PythonOperator default_args = { 'owner': 'air..
airflow로 매일 아침 8시에 실행되는 parentDag이 있고, 그 안에 매달 1일 아침 10시에 실행되는 subDag을 구성하려고 해. 이 코드를 파이썬으로 작성해줄수 있겠어? 라고 ChatGPT에게 시켜보았습니다. 그랬더니... 이런 코드를. 네, airflow에서 매일 아침 8시에 실행되는 parent DAG과 매월 1일 아침 10시에 실행되는 sub DAG을 구성하는 파이썬 코드는 다음과 같습니다. from datetime import datetime from airflow import DAG from airflow.operators.dummy_operator import DummyOperator from airflow.operators.subdag_operator import SubDagO..
SubDag - SubDag는 Airflow DAG 안에 존재하는 작은 DAG - 이를 사용하면 하나의 큰 DAG를 여러 작은 DAG로 분리 가능 - 이렇게 작은 DAG로 분리함으로써, 개발, 테스트 및 유지보수가 더 쉬움 - 또한, SubDag는 DAG를 이해하기 쉬운 작은 단위로 나눌 수 있으며, 작은 단위별로 추적할 수 있어 일부 작업이 실패한 경우 재시작 가능 - SubDag는 DAG 생성 시 하위 레벨의 DagBag에 의해 생성 - 하위 레벨의 DAG는 SubDagOperator를 사용하여 DAG 내에서 호출 SubDag의 장단점 장점 큰 DAG를 여러 작은 DAG로 분리할 수 있으므로 개발, 테스트 및 유지보수가 더 쉬워집니다. 작은 DAG로 나누어짐으로써 DAG를 이해하기 쉬운 작은 단위로 ..
Airflow Xcom - Xcom : cross-communication의 약자 - Airflow에는 task의 실행에서 야기되는 결과물을 xcom이라는 곳에 넣어두고 다른 task 실행시 해당 결과물을 참조해서 사용할 수 있도록 지원 - 쉽게 말해 Xcom이라는 주머니에 key:value 형태로 데이터를 저장해 놓고 각 task가 해당 데이터를 참조해서 사용하도록 하는 것 # xcom에 데이터 넣기! def _train_model(**context): model_id = "model_sample_1" context["task_instance"].xcom_push(key="model_id", value=model_id) task_train_model = PythonOperator( task_id="tr..
Airflow context variable - airflow는 task가 실행되는 특정 간격을 정의할 수 있는 추가 매개변수를 제공 -> 즉, 별도의 변수를 선언하지 않더라도 마치 환경변수처럼 사용할 수 있는 것이라고 이해하면 됨 - 이러한 매개변수 중 가장 중요한 변수는 DAG이 실행되는 날짜와 시간을 나타내는 execution_datedla - execution_date는 DAG을 시작하는 시간의 특정 날짜가 아닌 스케줄 간격으로 실행되는 시작 시간을 나타내는 타임스탬프 - daily로 스케줄링이 되어 있다면 실행날짜가 1월 10일인데, 최근 실행된 job_date가 1월5일이라면, execution_date는 1월 6일로 찍히는 개념 -> backfill 까지 고려한 개념으로 execution_d..
Git은 여러 소스코드 파일을 관리하기 위한 VCS(version control system)이다. 경우에 따라 Git에 큰 용량의 파일을 올려놓아야 하는 경우가 있다. (형상관리든 파일공유든 간에) 하지만 local branch의 100mb 이상 크기의 파일을 git remote에 push를 할때 push limit size error가 날 것이다. (100mb가 limit size이기 때문) 데이터 과학자인 경우, 가령 학습한 모델이라든지, 학습 데이터를 올릴 때 이런 문제를 많이 맞닥뜨리게 된다. 이럴때 사용할 수 있는 것이 Git LFS(Large File System)이다. Git LFS - git의 LFS, 말 그대로 큰 용량(사이즈)의 파일을 관리하기 위한 시스템 - 별도의 LFS의 서버에 ..
젠킨스는 빌드 스케쥴을 설정할 때 crontab 문법에 기반하여 스케쥴 가능하다. 젠킨스 내에서 여러개의 잡을 돌린다면 스케쥴을 자동으로 조절해 로드 밸런싱을 할 수 있는 방법이 있다. 주기적으로 스케쥴되는 태스크를 지정하기 위해서는 'H' 심볼을 사용해서 부하를 줄인다. (랜덤한 값 부여하여 실행) 1. 매시각 정각에 빌드 0 * * * * > 이렇게 지정하면 1시 정각, 2시 정각, ... 으로 실행 2. 1시간 간격으로 빌드를 하려면 아래와 같이 하면 된다. H * * * * > 가령 1시 42분, 2시 42분, ...과 같이 실행 '분'이 랜덤하게 지정되어 실행! 두가지 방법 0 * * * *과 H * * * *의 차이점은 무엇일까? 0 * * * *로 스케쥴을 지정한 Job이 많은 경우, 모든 ..
젠킨스 타임존 설정 방법은 크게 2가지가 있다. 유저별로 각각 설정하는 방법과 시스템 전체에서 타임존을 변경하는 방법이다. 유저별 설정 > 유저별로 timezone을 각각 설정 1. 유저 정보에 들어간다. 2. 설정을 누르고, 맨 아래 User Defined Time Zone에서 timezone 선택 시스템 설정 > 젠킨스 시스템 자체 timezone 설정 (전체 변경) 1. Jenkins Script Console 에 들어간다. 2. 아래 커맨드를 적용하여 timezone 변경 System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Seoul') System.setProperty('org.apache.commons.jelly.tag..