데이터 엔지니어링

ilysm·2023년 3월 27일

객체 지향을 위한 언어는 없음
객체 지향의 영역을 정하고 모듈안에서만 일어나도록
문제가 생겼을 때 모듈의 해당 부분만 찾아 핸들링하는 것이 목표

파이썬 환경 세팅하고 환경 컨트롤 하는 것 연습하기

파이프라인이란?

  • 한 데이터의 처리 출력이 다음 단계의 입력으로 구성이 되는 연결 형태 (네트워크나 함수 혹은 기능)
    데이터 파이프라인 - 원천이 있는 데이터를 가지고 와서 목적지에 넣는 기능

|
앞에 있는 내용을 뒤쪽으로 넘긴다.

환경변수 설정

anaconda가 설치되어있는 경로를 찾아
시스템 환경 변수 편집- 환경변수- path 편집을 눌러
C:\ProgramData\Anaconda3
C:\ProgramData\Anaconda3\Library
C:\ProgramData\Anaconda3\Scripts
를 추가해준다. (위 경로는 본인 컴퓨터 아나콘다 설치 경로임)
그럼 conda를 사용하기 위한 환경변수 설정이 완료 된다.

PowerShell에 conda를 입력했을 때 위와 같은 창이 나타나면 연결이 완료된 것.

지정 방식이 바뀌었다.
아나콘다 베이스 파이썬 환경임.

일하는 환경은 하나로 만들기

pip list | select-string "pandas"

| 가 파이프 라인 역할임 list 중 pandas를 가지고 온 것

pip list >> requirements.txt

꺽쇄 :
앞쪽에서 들어온 데이터를 출력물 형태의 결과 포멧으로 저장하는 기능

위와 같은 실행문을 입력하면 requirements라는 제목의 텍스트 파일이 생성됨 내용은 list 목록

천재교육 파이프라인

출발지: 분석 서버
목적지 :S3로 가는 것 이것도 파이브 라인임
출발지: S3
목적지: 처리계

ip포트를 이용 이렇게 처리되는 것이 파이프라인임.

설계

  1. 어디에서 어디로 무슨 데이터가 이동하는가?

    → RDB : dvdrental를 localhost → 어딘가로 보낸다

    → DDB : book_info를 localhost → 어딘가로 보낸다

  2. 스케쥴링은?

    → 월 배치 작업 → cron

  3. 오케스트레이션, 모니터링, 매니징 등…

    → 이번 시간에는 무리 → Airflow

개발 환경

  • 파이썬 3.8환경을 만들어서 실행하자

conda env list

콘다 3.8 버전 가상환경 만들기

현재 사용 하는 conda

conda create -n pipeline python=3.8

conda activate pipeline

(base) 환경에서 (pipeline) 환경으로 바뀜

vs code 사용

그 후 vscode를 들어가서 환경을 위에서 만든 환경으로 변경시켜준다.

ETL

어떠한 출발지에 있는 개수 만큼 사용될 쿼리들만 정렬
커넥터: 어떠한 쿼리가 실행이 될 때 실행이 되는 위치에 있는 데이터베이스, 목적이 되는 데이터베이스 간의 연결을 시켜주기 위한 모듈들.

pipeline: 4개의 모듈이 있음
1. 컨트롤러: 파이프라인 어느 시점에서 extract, transform, load 모듈들을 관리하기 위한 메인 컨트롤러를 하나 만듬, 각각의 모듈들을 호출해서 모듈의 함수를 컨트롤러에서 사용

settins - 위 컨트롤러만 호출하여 접속을 위해 위치 포트 정보 아이디 패스워드 등 잘 변하지 않는 값을 settins.py에 저장, main

최상단 main 세팅
데이터 베이스 연결 및 각각의 기능 쿼리 집합들 : settins

모듈을 사용을 한다?

모듈화시킨다. 선행 모듈을 불러와서 작업을 한다.

vscode 콘솔 내에서도 pipeline으로 변경


conda activate pipeline

PS PS D:\sup\2week\dev> cd .\test2\ #  test2로 이동
PS D:\sup\2week\dev\test2> cd .. # 그 전 단계로 이동

파이썬 모듈화
출발지
127.0.0.1, port 54321 or 몽고db 27017
도착지
같은 곳이거나 다른 ip(ex 10.10.0.1)가 될 수 있음.

파이프라인을 통해 핸들링

파이프라인 main.py (모듈화된 여러개들을 import 함, test1에서 test2에서 가져온 것 처럼)

고정화된 값들은 setting 값으로
바뀌는 것은 파이썬 argument 값으로 밀어냄
즉 코드안에서는 변수가 없음, 함수화 된 것들만 (나중에 수정이 필요없도록)

데이터베이스 연결 부분만 클래스로 구현

  1. 연결정보를 만드는 여러함수들이 내부구조만 조금 바뀌고 동일
  2. 클래스를 이용해서 리소스를 매니징하는 방식 (선언해서 객체 할당한다 x 실행하는 동안 돌아가도록. 그렇지 않으면 계속 돌아감 즉 클래스가 위드문안에서 실행될 때만)
  3. 데이터베이스 종류에 따라 커넥터가 늘어나면 함수를 따로 관리하는 것보다 커넥터 모듈안에서 연결정보를 한번에 맞물려지는 핸들링 장치
profile
한걸음씩 배워나갑니다

0개의 댓글