목록분류 전체보기 (108)
imhamburger 님의 블로그
저번주에는 내가 가지고 있는 데이터들을 sql로 불러와 데이터베이스, 데이터 테이블을 생성하여 행렬로 이루어진 테이블에 넣는 것을 배웠었다. 이번주는 에어플로우를 다루는 방법을 중점적으로 배웠다. 에어플로우가 뭔지는 이전글에 작성하였으니 참고! 에어플로우에 대해 다시 간단하게 말하자면 데이터 파이프라인을 관리하는 플랫폼이다. 핵심 요소는 dag, operator, task 이렇게 3가지이며 이를 다루기 위해서는 파이썬을 사용해야 한다. dag 를 데이터 파이프라인이라고 생각하면 쉽다. dag가 10개면 10개의 데이터 파이프라인을 가지고 있는 것이다. dag을 사용하는 방법은 공식문서에 자세히 적혀있다. 기본적으로 dag파일은 ~/airflow/dags 폴더 안에 {DAG명}.py 파일을 만들어 파일..
맥에서 터미널로 파이썬 코드를 작성하거나 다른 언어 코드를 작성할 때 매번 수작업으로 띄어쓰기를 해야했다.너무 불편해서 띄어쓰기를 해주는 기능을 추가하려 했다. 처음엔 .vimrc에 syntex on을 추가하였다. 글씨는 하이라이트가 되나 띄어쓰기가 해결되지는 않았다. 결과 구글링한 결과, .vimrc에 아래 코드를 추가해줘야 했다. 추가하고 저장하면 정상적으로 띄어쓰기가 되어있을 것이다.filetype plugin indent on 결과
간단한 계산기 기능을 파이썬을 이용해 만들고 패키지로 만들어 배포한다. 그리고 다른 기능에 미리 만든 계산기 패키지를 설치하고 계산기 패키지 안에 있는 함수를 dependencies로 받는 과제를 하였다. 필요한 파일은 총 2개이다. 계산기 기능을 가지고 있는 파일과 계산기 기능을 사용한 파일 1. 먼저 계산기 기능을 구현하기 위해 간단한 파이썬 코드를 작성한다.import sysa = int(sys.argv[1]) #인자를 받을 변수 ab = int(sys.argv[2]) #인자를 받을 변수 bdef add(): print(a + b) def div(): print(a / b)def mul(): print(a * b) 여기서 sys.argv는 터미널에서 파이썬 파일의 인자를 받을 때 사용하는 함수..
아파치 에어플로우(Apache Airflow)는 간단하게 말하자면 데이터 파이프라인을 관리하는 플랫폼이다. 그래서 데이터 파이프라인이 뭔데?파이프라인을 한국어로 번역하면 배관이다. 배관은 한쪽 방향으로 흘러가는 구조이다. 데이터 파이프라인도 데이터가 차.례.대.로 전달해 나가는 구조이다. 구조 안을 살펴보면, 데이터가 어딘가로부터 들어오면 그것을 필요한 데이터만 추출하여 변환하고, 가공하고, 저장해 전달하는 과정이다.에어플로우는 이러한 데이터 파이프라인을 관리해주는 것이다. 아니 근데 굳이 쓸 필요가 있을까? 내가 관리하면되지~라고 생각했다면... 불가능한 것은 아니다. 예전 그리고 지금까지도 그렇게 하는 분들도 많이 계시다. 이런 상황이 있다.예를들어, 물이 흐르는 배관이 10개가 이어져있는 모습을 ..
pyenv는 virtualenv 를 제공한다. 이건 가상환경을 만들어 가상환경 안에서 여러 버전의 파이썬을 사용해 볼 수 있다.가상환경의 주요 특징은 철저히 '격리된 공간'이라는 것이다. 가상환경 안에서 어떤 패키지를 설치하였다고 가정해보자.그 패키지는 가상환경 안에서만 동작할 것이고, 해당 가상환경이 아닌 다른 곳에서 시도하면 오류가 날 것이다. 그리고 pyenv가 여러 버전의 파이썬을 사용하고 관리하는 툴이라는 건 지난 글에서 소개하였다. virtualenv에서도 당연히 설치한 특정 버전의 파이썬 버전을 이용할 수 있다. virtualenv를 사용하는 방법은 쉽다.$ pyenv virtualenv {사용할 파이썬 버전} {가상환경 이름}위의 코드를 사용한 예시를 보여주자면 pyenv virtualen..
nohup은 'no hangups'라는 의미로 영어에서 전화를 끊을 때 끊는다고 표현할 때 'hangup'이라는 단어를 사용하는데 'no hangup'은 '끊지 않는다.'라고 해석할 수 있다. nohup을 쓰면 쉘스크립트 파일(*.sh)을 데몬 형태로 실행시킬 수 있다. 따라서 터미널을 종료해도 명령어로 중단을 외치기 전까지 해당 파일이 실행된다. 가끔 오랜 시간이 걸리는 스크립트를 사용할 때 좋다.참고로 nohup을 사용하면 nohup.out 이라는 파일이 생성되는데 여기에 실행된 파일의 로그(기록)가 담긴다. 데몬(Daemon)이란?눈에 보이지 않지만 열심히 일하고 있는 형태를 리눅스에서 데몬이라고 부른다. 여기서 주의사항은 nohup으로 실행할 파일의 permission이 755 이상이여야 작동한..
pyenv 는 여러 버전의 파이썬을 실행 및 관리할 수 있는 프로그램이다. 파이썬은 가장 최근 버전을 사용하는게 좋은게 아닌가? 라고 생각할 수 있겠지만,회사에서 옛날 데이터를 다룰 때 구버전의 파이썬을 이용했다면 해당 버전으로 확인해야하기 때문에 여러 버전의 파이썬을 실행하고 관리할 수 있는 pyenv 가 있어야 한다.다양한 파이썬 버전으로 테스트해 볼 수 있다.다른 버전의 파이썬 프로젝트를 해야할 때 편리하다.최신 버전의 파이썬 기능을 써보고 싶을 때 테스트해 볼 수 있다. pyenv 설치는 깃허브에 올라와있는 공식문서를 확인하면 된다. 나는 맥이어서 brew install pyenv로 설치하였다.간혹, 아래 사진처럼 C Compiler 어쩌고저쩌고 에러가 날 수 있다.pyenv를 설치하기 전 os에..
개발을 할 때, 깃의 브랜치 기능을 활용한다면 같은 팀끼리 작업 프로젝트를 공유하고 같이 작업할 수 있다.혹은 혼자 어떤 기능을 만들어 테스트해보고 싶을 때 브랜치(Branch)를 사용하면 유용하다.(만약 브랜치없이 기능을 만들어 push했는데 해당 기능이 작동되지 않을 때 다시 원상보구시켜야 하는 수고를 거쳐야 한다. 심할 땐 어디서 잘못됐는지도 모를 수 있다...) Branch를 한국어로 번역하면 '가지'이듯이 메인(Main)으로부터 가지를 뻗어나가 작업을 수행한다. 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에 여러 작업을 동시에 진행할 수 있다. 그리고 나중에 완료한 브랜치를 메인과 merge할 수 있다. 아니면 어떠한 이유로 내가 만들고 있는 기능이 필요없다면 그냥 브랜치만 없앨 수 있..
지난 7일동안 데이터 엔지니어링 부트캠프에서 가장 인상깊었던 배움은 Mysql을 이용해 데이터베이스를 만들고 그 안에 빈 테이블을 만들어 가공되지 않은 데이터를 테이블 안에 올바른 데이터 형식으로 insert 한 것이다. 마치 엑셀 형태처럼 말이다. Mysql을 이용해 데이터 파일을 가져올 때, LOAD DATA INFILE과 같은 명령문을 사용하여 파일을 로드해야하는데 사전에 파일을 로드해서 가져올 수 있는 위치를 제한시켜야 한다. 이는 무단으로 접근하거나 잠재적인 취약점을 방지하기 위함인데.. 아무나 내 파일을 보여줄 순 없으니까! 보안을 위해서 내 파일을 제한된 위치로 옮겨주는 작업을 해야한다. (안해주면 어차피 에러난다..) STEP. 1: 제한된 디렉토리를 나타내는 'secure_file_pri..
문제_SUDDEN 이라는 파일이 있을 때 "SUDDEN!!!"을 외친다. 그리고 3초 간격으로 실행된다. 없을 때는 "check" 를 외친다. 3초 간격으로 실행된다. 처음 내가 작성한 코드#!/bin/bashFILE=~/tmp/_SUDDENwhile truedo if [ -e "$FILE" ]; then echo "SUDDEN!!!" sleep 3 else echo "check" sleep 3 fidone 실행했을 때는 문제가 없어보이지만 이 코드는 잘못된 코드이다. 결론부터 말하자면, if문 안에 sleep 3 을 넣으면 CPU가 엄청 높아진다. 왜냐하면 전체적으로 봤을 때는 실행속도가 주어지지않아 계속해서 컴퓨터가 돌아가며 "SUDDEN!!!"이 나오는 것을..