앎을 경계하기

[가짜연구소3기] Data Engineer 58

[가짜연구소 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는 다양한 언어..

[가짜연구소 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기] 데이터 엔지니어링 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..

[가짜연구소 3기] 데이터 엔지니어링 50 - Database Operations on the Command Line

csvkit 라이브러리가 SQL과 같은 기능을 명령 줄에 제공하는 방법을 배운다. sql2csv csvkit 라이브러리 명령 다양한 SQL 데이터베이스 및 방언에 액세스한다. 데이터베이스 클라이언트를 거치지 않아도 된다. sql2csv 결과를 CSV 파일로 저장한다. sql2csv --db "sqlite:///SpotifyDatabase.db"\ --query "SELECT * FROM Spotify_Popularity"\ > Spotify_Popularity.csv 데이터베이스 연결 방법을 설정한다.--db : 데이터베이스 연결 및 위치를 나타내는 따옴표로 묶기 쿼리 작성--query : SQL 쿼리 작성, 항상 한 줄로 작성해야한다. 결과 저장리디렉션하지 않으면 터미널에 출력한다. 리디렉션 기호를 사..

[가짜연구소 3기] 데이터 엔지니어링 49 - Data Cleaning and Munging on the Command Line

csvkit 일련의 데이터 명령을 커맨드 라인으로 가져와서 격차를 해소한다. 파이썬으로 개발되었다. pip install csvkit 로 설치할 수 있다. in2csv in2csv는 csvkit에서 유용한 명령이다. 텍스트나 엑셀 같은 테이블 형식 데이터 파일을 csv로 변환한다. in2csv SpotifyData.xlsx > SpotifyData.csv 스프레드시트 이름을 출력하려면 --names 또는 -n을 사용한다. in2csv -n SpotifyData.xlsx Worksheet1_Popularity Worksheet2_MusicAttributes 특정 시트 데이터를 변환하려면 --sheet를 사용한다. in2csv SptifyData.xlsx --sheet 'Worksheet1_Popularit..