전체 글 45

플레이데이터 데이터 엔지니어링 32기 7월 5주차 회고록

FACTS영화진흥위원회 OPEN APImovie pipeline팀프로젝트 시작!1. 영화진흥위원회 OPEN API https://oddsummer.tistory.com/28 영화진흥위원회 API (pytest 실습)1. 새로운 환경 세팅pyenv global 3.11.9pdm initls -l .venv #제대로 생겼는지 확인source .venv/bin/activate2. 영화진흥위원회 https://www.kobis.or.kr/kobisopenapi/homepg/main/main.do 영화진흥위원회 오픈APIOPEN API 서비스oddsummer.tistory.com 영화진흥위원회 openAPI를 활용하여 특정 날짜의 박스 오피스 데이터를 받아오고 이를 원하는 방식으로 저장하는 실습을 진행하였다. p..

[AIRFLOW] movie pipeline

파이프라인 흐름1. start 2. branch.optmp/test_parquet 하위 경로에 파일 확인- 존재하면 rm.dir task 실행- 존재하지 않으면 get.start와 echo.task 실행 3. get.start (trigger_rule = all_done) 4. get.data (multiMovieYn, repNationCd)4-1. multi.y : 독립영화4-2. multi.n : 상업영화4-3. nation.k : 한국영화4-4. nation.f : 외국영화 5. get.end 6. save.data7. end1. branch.op branch_op = BranchPythonOperator( task_id="branch.op", pytho..

개발 환경설정

1. wsl 설치https://oddsummer.tistory.com/1 [LINUX] WSL로 윈도우에 Linux 설치 (하위 시스템에는 설치된 배포판이 없습니다, 0x8004032d 오류 해결)wsl로 리눅스 설치하기https://learn.microsoft.com/ko-kr/windows/wsl/install WSL 설치wsl --install 명령을 사용하여 Linux용 Windows 하위 시스템을 설치합니다. Ubuntu, Debian, SUSE, Kali, Fedora, Pengwin, Alpine 등 원하는 Linuxoddsummer.tistory.com 2. git 설치https://oddsummer.tistory.com/4 public key 깃헙 등록.ssh-keygen -t rsa -..

Python/독학 2024.08.07

영화진흥위원회 API (pytest 실습)

1. 새로운 환경 세팅pyenv global 3.11.9pdm initls -l .venv #제대로 생겼는지 확인source .venv/bin/activate2. 영화진흥위원회 https://www.kobis.or.kr/kobisopenapi/homepg/main/main.do 영화진흥위원회 오픈APIOPEN API 서비스 영화진흥위원회 영화관입장권통합전산망에서 제공하는 오픈API 서비스로 더욱 풍요롭고 편안한 영화 서비스를 즐겨보세요.www.kobis.or.kr 1) 키발급 회원가입을 하고, 키 발급/관리에 가서 키 발급받기 신청하면 쉽게 발급 받을 수 있다. 2) 제공서비스  제공서비스는 일별, 주간/주말 박스오피스가 있는데 그 중 일별 박스오피스 API 서비스를 활용할 것이다.특정 일자 상영작들의 ..

플레이데이터 데이터 엔지니어링 32기 7월 4주차 회고록

FACTSairflow import_db 파이프라인airflow make_parquet 파이프라인argparser를 이용한 히스토리 cli 고도화pytestmovie pipeline (진행 중)플레이데이터 토킹데이 (주말) 0. Intro - simple_bash 파이프라인https://oddsummer.tistory.com/16 [AIRFLOW] simple_bash 파이프라인 만들기 실습DAG이 실제로 작업을 수행하기 위해서는 태스크 정의를 해야한다. 하나의 테스크들이 모여 하나의 DAG을 구성하고, DAG들이 모여 workflow가 이루어진다.  Airflow 태스크의 특징은 항상 멱등성을 가oddsummer.tistory.com 3주 차에서 완성한 simple_bash 파이프라인은 history_..

argparse 를 이용한 히스토리 cli 고도화

1. argparseargparse는 파이썬 표준 라이브러리의 일부로, 명령줄 인자를 쉽게 처리하고 파싱할 수 있도록 도와주는 모듈.이를 통해 스크립트나 프로그램이 실행될 때 사용자로부터 인자(argument)를 받아 다양한 동작을 수행가능하다. 1. argparse 모듈 임포트 import argparse 2. ArgumentParser 객체 생성parser = argparse.ArgumentParser(description="예시 프로그램이지롱") 3. 명령줄 인자 추가 및 파싱parser.add_argument('--name', type=str, help='사용자의 이름을 입력하세요.')parser.add_argument('--age', type=int, help='사용자의 나이를 입력하세요.')a..

DB 파티셔닝 (Partitioning)

1. Partitioning?파티셔닝이란 table을 파이션(partition)이라는 작은 단위로 나누어 관리하는 기법이다.큰 테이블이나 인덱스를, 관리하기 쉬운 파션 단위로 물리적 분할함으로써 성능을 향상시키고, 관리 효율성을 높이며, 대용량 데이터를 처리하기 쉽게 만든다. 주요 개념 파티션: 데이터를 나눈 각 조각. 각각의 파티션은 독립적으로 저장되고 관리됨.파티셔닝 키: 데이터를 어떻게 나눌지 결정하는 기준이 되는 열(column). 파티셔닝 종류  범위 파티셔닝: 특정 범위에 따라 데이터를 나눈다. 예를 들면, 날짜 범위에 따라 데이터를 월별로 나누는 경우.해시 파티셔닝: 해시 함수로 데이터를 균등하게 나눈다. 데이터가 특정 패턴 없이 고르게 분산.리스트 파티셔닝: 특정 값 리스트에 따라 데이터를..

[AIRFLOW] make_parquet 파이프라인 만들기 실습

make_parquet 파이프라인에서는 1~5 단계의 task가 존재한다.  1. start2. check.done3. to.parquet4. make.done5. end 1. start : DAG의 시작을 나타내는 taskEmptyOperator을 생성하는 get_emp 함수를 정의. id와 rule 두개의 매개변수를 받으며, rule의 기본값은 all_success 이다.def gen_emp(id, rule="all_success"): op = EmptyOperator(task_id=id, trigger_rule=rule) return optask_start = gen_emp('start') #태스크의 ID를 'start'로 설정 함수를 분리한 이유는, 여러 task를 생성해야 할 때 동일..

Parquet 파일 형식

1. Parquet?Parquet이란 하둡에서 칼럼방식으로 저장하는 저장 포맷이다.   열을 기반으로 데이터를 처리하면 행 기반으로 압축할때보다 다음과 같은 장점을 가진다. 1. 데이터 압축률이 더 높음 : 같은 속성값을 가지는 칼럼 단위로 구성하면 데이터가 더 균일하기 때문2. 필요한 열의 데이터만 읽어서 처리 : 데이터 처리에 들어가는 지원 절약 (선택되지 않은 칼럼 I/O 발생하지 않기 때문)3. 칼럼에 동일한 데이터 타입이 저장되기 때문에, 칼럼별로 적합한 인코딩 사용 가능  즉, parquet 형식을 사용하면 시간과 메모리를 절약할 수 있다. 출처: https://butter-shower.tistory.com/2452. Parquet 실습CSV 파일을 읽어 데이터 전처리를 수행한 후, 특정 키워..

[AIRFLOW] import_db 파이프라인 만들기 실습

import_db 파이프라인에서는 1~8 단계의 task가 존재한다.  1. start2. check.done 에러가 발생 시, error report 단계를 거쳐 end 단계로 이동.3. to.csv4. create.table5. to.tmp6. to.base7. make.done8. end이번 파이프라인은 생성된 count.log를 csv로 변환하고 이를 DB로 옮기는 과정으로 프로세스가 좀 더 복잡하다. 따라서 variable를 선언해서 경로를 지정해 주거나, 코드를 새로운 파일로 분리해서 호출하는 등의 과정을 거친다. 선언한 variable과 공통적으로 쓰이는 코드들을 따로 정리해두려고 한다.  0. Preset1) VariablesCHECK_SH/home/oddsummer/airflow/dags..