컴퓨터 공부/💿 Airflow 33

[Airflow] Python Operator에 op_kwargs로 변수 할당하기

먼저 Python 오퍼레이터의 op_kwargs 파라미터를 이해해봅시다. CASE 1) 함수에 일반 변수만 있을 경우 def register(name,gender): print(f'이름은 {name}이고 성별은 {gender}입니다') 파이썬 오퍼레이터로 작성해본다면, 아래와 같이 작성할 수 있습니다. python_task = PythonOperator( task_id = 'python_task', python_callable=register, op_kwargs={'name':'allu','gender':'male'} # 딕셔너리로 작성! ) CASE 2) 함수에 일반 변수 + **kwargs 도 있을 경우 def register(name,gender, **kwargs): print(name) print..

[Airflow] Python Operator에 op_args로 변수 할당하기

먼저 Python 오퍼레이터의 op_args 파라미터를 이해해봅시다. CASE 1) 함수에 일반 변수만 있을 경우 def register(name,gender): print(f'이름은 {name}이고 성별은 {gender}입니다') 파이썬 오퍼레이터로 작성해본다면, 아래와 같이 작성할 수 있습니다. python_task = PythonOperator( task_id = 'python_task', python_callable=register, op_args=['allu','male'] # 리스트로 작성! ) CASE 2) 함수에 일반 변수 + *args 도 있을 경우 def register(name,gender, *args): print(name) print(gender) print(args)#('kore..

[Airflow] 파이썬 함수 파라미터 이해

함수를 실행시킬 때, 인수 없이 그냥 함수만 실행시키는 것이 아니라, 파이썬 오퍼레이터에도 함수 인수를 주는 것을 이해하려면 먼저 파이썬 함수 파라미터를 어떻게 받는지 이해가 선수되어야 합니다. 1. 파이썬 함수 인자 *args args로 들어온 값은 튜플로 저장이 됩니다. args에서 값을 꺼낼 때에는 인덱스를 이용합니다. (ex: args[0], args[1]) args라는 이름 외 다른 이름으로 받아도 됩니다.(ex: some_func(*kk):) 2. 파이썬 함수 인자 **kwargs (=keyword arguments) kwargs로 들어온 값은 딕셔너리 형태로 저장이 됩니다. kwargs에서 값을 꺼낼 때에는 get()함수를 이용합니다. (ex: name = kwargs.get('name'))..

[Airflow] @task 데코레이터 사용하기

1. 파이썬 데커레이터 Decorator는 장식하고 꾸미는 것을 의미하는데, 함수를 장식하는 것이라고 이해하시면 됩니다. 원래의 함수를 감싸서(Wrapping) 바깥에 추가 기능을 덧붙이는 방법입니다. ※ 함수를 감싼다는 것이 어떤 의미일까요? 파이썬은 함수 안에 함수를 선언하는 것이 가능하고 함수의 인자로 함수를 전달하는 것이 가능하며 함수 자체를 리턴하는 것이 가능합니다. def outer_func(target_func): # 내부 함수 정의 def inner_func(): print("target 함수 실행 전입니다.") target_func() print("target 함수 실행 후 입니다.") # 내부 함수 리턴 return inner_func 예시를 한 번 들어봅시다. 파이썬 데코레이터를 사용..

[Airflow] 외부 파이썬 함수 수행하기

DAG 외부에서 함수를 만들었을 때, 그 함수를 import 해서 실행시키는 방법에 대해서 알아보겠습니다. 1) 파이썬 모듈 경로 이해하기 : dag에서 우리가 만든 외부 함수를 import 해와야 하는데, import 경로를 어떻게 작성해야 하는지 알려면, 파이썬 모듈 경로를 이해해야 합니다. 먼저 airflow의 오퍼레이터를 불러올 때는 아래와 같은 코드가 필요했습니다. from airflow.operators.python import PythonOperator : "Airflow 폴더 아래 operators 폴더 아래 python 파일 아래에서 PythonOperator 클래스를 가지고 온다"는 뜻입니다. ※ 그렇다면, 파이썬은 위 경로를 어떻게 찾을까요? : 파이썬은 sys.path 변수에서 모듈..

[Airflow] Python operator 기본

파이썬 오퍼레이터는 어떤 역할을 하는지 알아봅시다. 먼저 라이브러리를 어떻게 사용하는지부터 살펴볼까요? from airflow.operators.python import PythonOperator # bash operator는 .bahs 였다면, python operator는 .python으로 라이브러리를 불러옵니다. Python Operator는 무엇을 하는 오퍼레이터일까요? : "정의된 파이썬 함수를 실행시키는 오퍼레이터" 입니다. (오퍼레이터는 새로운 파일을 생성하는 것이 아닌, 기존 파일을 실행 시켜주는 역할을 합니다.) 가장 많이 쓰이는 Operator로서, Airflow를 배운다면, 꼭 알아야 하는 오퍼레이터라고 할 수 있습니다! ※ 파이썬 모듈에는 어떤 오퍼레이터가 있을까? 패키지 오퍼레이터..

[Airflow] Email Operator로 메일 전송하기

1. Email 오퍼레이터란? 이메일을 전송해주는 오퍼레이터로서 아래와 같은 형태를 가집니다. email_t1 = EmailOperator( task_id = "email_t1", to = "hockey9322@naver.com", subject = " Airflow 처리결과", html_content = "이메일 내용입니다! " ) 여기서 to 는 누구에게 메일을 보낼것인지 정하는 란이고, subject는 메일제목을 뜻하며, 메일 내용은 html_content에 적으면 됩니다. 이메일 전송을 위해선 사전 작업 세팅이 필요한데요, 해당 작업은 구글 메일 서버를 사용하도록 하겠습니다. 2. 사전 작업 설정(Google) Gmail --> 설정 --> 모든 설정 보기 --> 전달 및 POP/IMAP --> ..

[Airflow] Bash Operator & 외부 쉘 파일 수행하기

1. 쉘 스크립트란? Unix/Linux 쉘 명령을 이용하여 만들어지고, 인터프리터에 의해 한 줄씩 처리되는 파일을 말합니다. (컴파일 : 속도 ↑, c, java // 인터프리터 : 속도 ↓, python, shell) Echo, mkdir, cd, cp, tar, touch 등의 기본적인 쉘 명령어를 입력하여 작성하며 변수를 입력받거나 For문, if문 그리고 함수도 사용가능합니다. 확장자가 없어도 동작하지만, 주로 파일명에 .sh 확장자를 붙입니다. 2. 왜 쉘 스크립트가 필요할까요? 쉘 명령어를 이용하여 복잡한 로직을 처리하는 경우 (ex) "sftp를 통해 파일을 받은 후 DB에 Insert & tar.gz으로 압축해두기" 처럼 복잡한 로직도 쉘 스크립트로 만들어 놓으면 유지보수성도 좋고 관리하..

[Airflow] Cron 스케줄 이해하기

Cron 스케쥴은 task가 실행되어야 하는 시간(주기)를 정하기 위한 5개의 필드로 구성된 문자열입니다. {분} {시} {일} {월} {요일} 순으로 구성되어 있는데요, 각각의 필드는 기본적으로는 숫자를 넣어주게 됩니다. 그럼, 구체적인 표를 한 번 살펴봅시다. Cron 표현식 ● * : 모든 값을 뜻합니다. ● ? : 특정한 값이 없음을 뜻합니다. ● - : 범위를 뜻합니다. (예) 월요일에서 수요일까지는 MON-WED로 표현 ● , : 특별한 값일 때만 동작 (예) 월,수,금 MON,WED,FRI ● / : 증가값 지정 (시작시간 / 단위) (예) 0분부터 매 5분 0/5 ( , 와 - 는 분,시,일,월,요일 어디에나 올 수 있습니다) ● L : (일, 요일에서만 설정 가능) ※ 일에 L입력시, 해..

반응형