기록 블로그

전체 글 73

07/06 64일차 Spark의 내부동작 | ML | 클라우드

Spark의 내부동작, Spark ML, 클라우드 기반 Spark 주요 메모 사항 Spark 파일포맷 데이터는 디스크에 파일로 저장됨: 일에 맞게 최적화 필요 Spark의 주요 파일 타입 1: Y -> CSV, JSON / 압축되면 Splittable 하지 않음 (압축 방식에 따라 다름 - snappy 압축이라면 Splittable) ㄴ gzip으로 압축된 CSV, JSON 파일은 Splittable하지 않기 때문에 하나의 executor가 일단 처리하게 되며 메모리 에러가 날 확률이 높음 2: PARQUET -> Spark의 기본 파일 포맷 Parquet란? 트위터와 클라우데라에서 공동 개발 (Doug Cutting) Dataframe Write spark 세션을 spark-avro 패키지로 confi..

07/05 63일차 Spark SQL

Spark SQL, UDF, Unit Test 주요 메모 사항 Spark SQL Spark SQL과 Spark DataFrame의 차이점 Spark SQL의 일반적인 사용법 이해 SQL은 빅데이터 세상에서도 중요! - 데이터 분야에서 일하고자 하면 반드시 익혀야할 기본 기술 - 구조화된 데이터를 다루는한 SQL은 데이터 규모와 상관없이 쓰임 - 모든 대용량 데이터 웨어하우스는 SQL 기반 ㄴ Redshift, Snowflake, BigQuery ㄴ Hive/Presto Spark도 예외는 아님 -> Spark SQL이 지원됨 Spark SQL이란? - Spark SQL은 구조화된 데이터 처리를 위한 Spark 모듈 - 데이터 프레임 작업을 SQL로 처리 가능 ㄴ 데이터프레임에 테이블 이름 지정 후 sql..

07/04 62일차 Spark

Spark 구조, Spark DataFrame 주요 메모 사항 Spark 데이터 처리 Spark 데이터 시스템 아키텍처 데이터 병렬처리가 가능하려면? -> 데이터가 먼저 분산되어야함 하둡 맵의 데이터 처리 단위는 디스크에 있는 데이터 블록 (128MB) ㄴ hdfs-site.xml에 있는 dfs.block.size 프로퍼티가 결정 Spark에서는 이를 파티션 (Partition)이라 부름. 파티션의 기본크기도 128MB ㄴ spark.sql.files.maxPartitionBytes: 파티션의 기본크기 변경, HDFS등에 있는 파일을 읽어올 때만 적용됨 다음으로 나눠진 데이터를 각각 따로 동시 처리 ㄴ 맵리듀스에서 N개의 데이터 블록으로 구성된 파일 처리시 N개의 Map 태스크가 실행 ㄴ Spark에서는..

07/03 61일차 빅데이터 처리 시스템, Hadoop, Spark

빅데이터, Hadoop, Spark 주요 메모 사항 빅데이터의 정의와 예 빅데이터의 정의 - 서버 한대로 처리할 수 없는 규모의 데이터 - 판다스로 처리해야할 데이터가 너무 커서 처리가 불가능하다면 어떻게 할 것인가? ㄴ> 기존의 소프트웨어로는 처리할 수 없는 규모의 데이터 대표적인 기존 소프트웨어 오라클이나 MySQL과 같은 관계형 데이터베이스는? - 분산환경을 염두에 두지 않음 - Scale-up 접근방식 (vs. Scale-out) 4V (Volume, Velocity, Variety, Varecity) - Volume: 데이터의 크기가 대용량? - Velocity: 데이터의 처리 속도가 중요? - Variety: 구조화/비구조화 데이터 둘다? - Veracity: 데이터의 품질이 좋은지? 빅데이터..

06/26 ~ 06/30, 56~60일차 3번째 프로젝트

유시동물 대시보드 고도화 주요 메모 사항 지난 프로젝트의 결과물 보고서 PPT 보고서 DOCS 회고록 포스팅 1일차 사실 5일 정도의 세미 프로젝트여서 하루가 중요했었는데, 고도화하는 과정에서는 먼저 목표와 문제정의가 필요했다. -> 이는 결국 소통을 많이 해야한다고 생각. 성현님이 만나서 회의하자고 제안해주셔서 팀원들과 모두 만나서 회의했다. 문제정의와 목표 설정 사실 기존에 작성했던 Cloud Functions을 그대로 사용하는게 비용적인 측면에서 유리하고, 서버리스하게 잘 구성된 아키텍처는 맞다. ㄴ> 다만, 이번 프로젝트를 시작하기 전에 배웠던 Airflow와 Docker, CI/CD를 사용해보기 위해 아키텍처 구성을 변경하고자 했다. 결론은 GCP에서 Compute Engine를 하나 할당해 D..

06/23 55일차 DBT와 데이터 카탈로그

DBT, 데이터 카탈로그 주요 메모 사항 dbt Seeds Seeds란? 많은 dimension 테이블들은 크기가 작고 많이 변하지 않음 Seeds는 이를 파일 형태로 데이터웨어하우스로 로드하는 방법 ㄴ Seeds는 작은 파일 데이터를 지칭 (보통 csv 파일) 1. dbt - seed 폴더에 csv 테스트 파일 생성 2. 만드려고 하는 테이블의 레코드 값을 넣어준다 3. dbt seed 실행해서 빌드 4. Colab에서 redshift에 연결해 확인 dbt Sources Staging 테이블을 만들 때 입력 테이블들이 자주 바뀐다면? ㄴ models 밑의 .sql 파일들을 일일이 찾아 바꿔주어야함 ㄴ 이 번거로움을 해결하기 위한 것이 Sources ㄴ 입력 테이블에 별칭을 주고 별칭을 staging 테..

06/22 54일차 Airflow 운영과 DBT

Airflow 운영과 DBT 주요 메모 사항 Airflow 운영과 대안 프로덕션 사용을 위한 Airflow 환경 설정 Things to Change airflow.cfg is in /var/lib/airflow/airflow.cfg ㄴ Any changes here will be reflected when you restart the webserver and scheduler ㄴ [core] 섹션의 dags_folder가 DAG들이 있는 디렉토리가 되어야함 -> /var/lib/airflow/dags ㄴ dag_dir_list_interval: dags_folder를 Airflow가 얼마나 자주 스캔하는지 명시 (초 단위) -> default : 5분 ㄴ .airflowignore 파일 -> gitign..

06/21 53일차 Airflow 다양한 기능 사용해보기

Airflow 주요 메모 사항 Dag Dependencies Dag를 실행하는 방법 주기적 실행: schedule로 지정 다른 Dag에 의해 트리거 ㄴ Explicit Trigger: Dag A가 끝나면 Dag B를 트리거 (TriggerDagRunOperator) ㄴ Reactive Trigger: Dag B가 Dag A가 끝나기를 대기 (ExternalTaskSensor) 알아두면 좋은 상황에 따라 다른 태스크 실행 방식들 ㄴ 조건에 따라 다른 태스크로 분기 (BranchPythonOperator) ㄴ 과거 데이터 Backfill시에는 불필요한 태스크 처리 (LatestOnlyOperator) ㄴ 앞단 태스크들의 실행상황 -> 어떤 경우에는 앞단이 실패해도 동작해야하는 경우가 있을 수 있음 Expli..

06/20 52일차 ELT 작성과 구글시트_슬랙 연동 (후반부)

Airflow 주요 메모 사항 구글 시트 연동하기 (1): 시트 => Redshift 테이블 개요 회사가 GCP를 쓴다면 Spread sheet를 사용하는 경우가 있 구현 절차들 1. 시트 API 활성화하고 구글 서비스 어카운트 생성하고 그 내용을 JSON 파일로 다운로드 2. 어카운트에서 생성해준 이메일을 조작하고 싶은 시트에 공유 3. Airflow DAG쪽에서 해당 JSON 파일로 인증하고 앞서 시트를 조작 Colab에서 Table 생성 %%sql CREATE TABLE asltn99.spreadsheet_copy_testing ( col1 int, col2 int, col3 int, col4 int ); 구글 서비스 어카운트 생성 구글 클라우드 로그인 구글 스프레드시트 API 활성화 필요 ㄴ ht..