앎을 경계하기

전체 글 356

[가짜연구소 3기] 데이터 엔지니어링 58 - Building production pipelines in Airflow

템플릿 사용하기 템플릿을 사용하면 DAG 실행 중 정보를 대체할 수 있다. 템플릿 정보를 가지고 있는 DAG가 실행되면 정보가 해석되어 DAG 실행에 포함된다. task 정의 시, 추가적인 유연성을 제공한다. jinja 템플릿 언어를 사용하여 작성할 수 있다. Jinja는 Python 프로그래밍 언어용 웹 템플릿 엔진 템플릿에 대한 이해 전, 템플릿을 사용하지 않은 배쉬 연산자를 사용하는 예제를 보자. from airflow.operators.bash_operator import BashOperator t1 = BashOperator( task_id = 'first_task', bash_command = 'echo "Reading file1.txt"', dag = dag ) t2 = BashOperato..

[가짜연구소 3기] 데이터 엔지니어링 57 - Maintaining and monitoring Airflow workflows

Airflow Sensors 특정 조건이 참이 되길 기다리는 연산자 파일 생성, 데이터베이스에 레코드 업로드, 웹 요청의 특정 응답 일반 작업과 마찬가지로 task에 할당된다. 비트 시프트 종속성 사용 가능 airflow.sensors.base_sensor_operator 클래스에서 파생 센서 인자들 mode - 센서 상태 확인 mode='poke' - 완료시까지 계속 확인 mode='reschedule' - 다른 슬롯을 사용할 수 있을때까지 기다림 poke_interval - poke모드에서 airflow에 조건을 확인하는 빈도를 알려줌 timeout - 작업 실패로 표시하기 전에 대기하는 시간 File sensor 파일 시스템의 특정 위치에 파일이 있는지 확인함 주어진 디렉토리 내 모든 파일이 확인 ..

[가짜연구소 3기] 데이터 엔지니어링 56 - Implementing Airflow DAGs

Airflow operators 일반적을 독립적으로 실행한다. 서로 정보를 공유하지 않는다. 다양한 작업의 연산자들이 있다. BashOperator BashOperator( task_id='bash_example', bash_command='echo "Example!"', dag=ml_dag) BashOperator( task_id='bash_script_example', bash_command='runcleanup.sh', dag=ml_dag) Bashoperator는 주어진 명령을 bash에서 실행한다. 명령은 임시 디렉토리에서 실행되고 자동으로 정리된다. 환경 변수 설정도 가능하다. 여러 개의 연산은 위 코드처럼 나열해서 dag만 공통적으로 등록해주면 된다. 예제 from airflow.operat..

[가짜연구소 3기] 데이터 엔지니어링 55 - Intro to Airflow

데이터 엔지니어링이란? 엔지니어링은 데이터와 관련된 모든 작업을 적용하고 안정적이고 반복 가능하며 유지 관리가 가능한 프로세스로 만드는 일이다. 워크 플로우? 데이터 엔지니어링 작업을 수행하기 위한 일련의 단계 파일을 다운로드 받고, 데이터 복사하고, 필터링하고 데이터베이스에 쓰는 작업 등 사용자 요구에 따라 다르게 다양한 수준의 복잡성을 갖는다. 판매 데이터 다운로드 데이터 전처리 ML 파이프라인 실행 결과 웹서버에 업로드 CEO에게 보고 Airflow 워크 플로우를 프로그램하기 위한 플랫폼Airflow만 엔지니어링 워크플로우를 사용하기 위한 도구는 아니다. Luigi, SISS, Bash scripting으로도 가능하다. 워크플로우 생성, 스케줄링 및 모니터링을 포함한다. Airflow는 다양한 언어..

4. 사이킷런으로 지도 학습해보기 1

지도학습(Supervised learning) 모델이 학습할 데이터(X)와 그에 맞는 정답 레이블(y)쌍을 데이터셋으로 구성하여 사용하는 학습 방법 사이킷런에 있는 모든 지도학습용 estimator들은 fit(X, y) 형태로 학습하고 predict(X) 형태로 예측한다. classification 문제라면 y는 특정 클래스가 될 것이고, regression 문제라면 y는 연속적인 변수의 특정 값이다. 최근접 이웃 알고리즘과 차원의 저주 문제 KNN classifier를 사용하여 문제를 풀어보자. import numpy as np from sklearn import datasets iris_X, iris_y = datasets.load_iris(return_X_y=True) np.unique(iris_y..

[가짜연구소 3기] 데이터 엔지니어링 54 - Functions and Automation

Bash 스트립트에서 기본 함수 빌드하기bash script에서의 함수 형태function 함수이름 () { 내부코드 # 이전에 배운 루프, 조건문, shell-in-a-shell 모두 가능 return 반환값 }예제1function print_hello () { echo "Hello World!" } print_helloHello World!예제2화씨에서 섭씨로 변환하는 함수 만들기temp_f=30 function covert_temp () { temp_c=$(echo "scale=2; ($temp_f -32) * 5 / 9" | bc) echo $temp_c } convert_temp-1.11인수, 반환값, 스코프function print_filename { echo "The first file wa..

[가짜연구소 3기] 데이터 엔지니어링 53 - Control Statements in Bash Scripting

bash에서 if문 사용하기if [ 조건 ]; then #조건이 참일 때 else #조건이 거짓일 때 fi주의할 점 : [] 사이에 조건을 작성할 때 반드시 처음과 마지막에 공백을 넣어야한다.X="Queen" if [ $x == "King" ]; then echo "$x is a King!" else echo "$x is not a King!" fiQueen is not a King!비교연산자를 사용한 조건문X=10 if (($x > 5)); then echo "$x is more than 5!" fi비교연산자를 사용할 때는 대괄호 대신 더블 괄호를 사용해서 표현할 수 있다.대괄호를 사용하지 못하는 건 아니다.대괄호를 사용할 때는 비교연산자에 맞는 옵션을 대신 사용한다.-eq : ==-ne : !=-lt..

[가짜연구소 3기] 데이터 엔지니어링 52 - Variables in Bash Scripting

Bash 스크립트에서 변수 만들기다른 언어와 유사하게 변수를 만들 수 있다.변수명=값 #변수선언 $변수명 #사용Bash에서 $ 기호를 사용해야만 변수가 변수인 것을 알고 참조할 수 있다.first = 'cynthia' last = 'liu' echo "Hi there " first last$없이 변수명을 사용하면 그냥 문자열로 인식함Hi there first last보통 다른 프로그래밍 언어를 사용할 때 변수 할당 시, 띄어쓰기를 한다고해서 에러가 발생하거나 하지 않는다.그러나 Bash에서는 에러가 발생하기 때문에 주의해야한다.var1='hihi' var2 = 'hihi'line 2: var2: command not found작은따옴표, 큰따옴표, 백틱'텍스트'를 사용하면 안에 내용이 모두 문자열로 해석..

3. 사이킷런의 Estimator object와 그 설정

사이킷런의 irist dataset(붓꽃데이터)는 (샘플 수, 피쳐 수) 사이즈로 구성되어 있다. iris는 150개의 데이터를 가지고 있고 이 각 데이터는 4개의 features로 이루어져 있다. features : 꽃받침과 꽃잎의 길이, 너비 >>> from sklearn import datasets >>> iris = datasets.load_iris() >>> data = iris.data >>> data.shape (150, 4) 지난 번에 함께 보았던 digits 데이터셋은 어떨까? digits데이터는 iris와 다르게 이미지 데이터였다. digits = datasets.load_digits() digits.images.shape (1797, 8, 8) import matplotlib.pypl..

[가짜연구소 3기] 데이터 엔지니어링 51 - From command-Line to Bash Script

Bash란 무엇이고 왜 중요한가? Bourne Again Shell에서 나온 단어 80년대에 개발되었고, 유닉스 기반 시스템에서 매우 중요한 역할을 한다. 명령을 하나 하나 복사해서 쓰지 않고 파일 하나로 구성해서 명령 수행을 할 수 있다. Bash scripting을 하기 전, 이전에 배운 명령어들을 기억해야함 egrep 또는 grep : 정규식 패턴 매칭을 사용해 입력 내용을 필터링한다. cat : 줄 단위로 사용할 파일 내용을 연다. tail 또는 head : -n플래그를 사용하여 마지막 또는 맨 앞에서부터의 내용을 보여준다. wc : -w, -l과 함께 사용하여 단어나 줄 수를 센다. sed : 정규식 패턴 매칭을 사용하여 문자열 대체를 한다. 예제 fruits.txt banana apple ca..