본문 바로가기

데이터 엔지니어링

(23)
[프로젝트] 📈주식 데이터 분석 파이프라인 구축하기 LOGS 파이프라인 구축 시 고려할 점    환경 설정 config✔ github에 리포지토리 만들고 내 작업환경인 VSC에서 로컬 폴더 열고 연동시켜줌.✔ .gitignore 파일 생성해서 불필요한 파일은 git에서 제외해줌.✔ API 데이터를 가져오고, dataframe을 활용하기 위해 requests와 pandas 각각 설치 완료.✔ Docker 환경 설정 docker-compose.yml 작성 및 컨테이너 띄우기까지 완료 지난 경험에서 로컬에서 작업할 때는 독립적인 환경을 확보하기 위해서 python 가상환경을 활용하기로 했기 때문에 가상환경 활성화해줌. bash에서는 그 커맨드가 아래와 같다. activate 하면 (venv)가 뜨고, 그럼 잘 실행된 것.source venv/Scripts/activat..
[SQLD] SQL 스킬을 업그레이드하자! - 자격증은 덤이지 과목 I - 데이터 모델링의 이해 🧠  데이터 모델링의 목적 유연성, 일관성 유지, 중복 제거  데이터 모델링이란? '현실 세계'를 단순화하여 표현하는 기법. 추상화: 상위 개념화. 데이터 모델에서 중요한 정보만 남기고, 나머지 세부사항을 제거하는 과정.             => ERD에서 엔티티 간의 관계를 일반화할 때 사용.             => "운전하는 법"을 배울 때, 차종별 차이를 생략하는것.단순화: 추상화보다 더 실용적이고 직관적인 개선 과정.             => 정규화 진행, 릴레이션의 복잡성을 줄이기 위해 테이블 병합 혹은 분할.             => 자동차 기능 중 창문 연다처럼 쉽게 설명하는 것.명확화: 데이터를 사용할 사람들이 같은 의미로 해석할 수 있도록 용어..
[데이터 엔지니어링] 데이터 웨어하우스, 레이크, 마트와 데이터 모델링 💫 => 분석을 위한 데이터베이스가 DWH고, OLTP를 위한 데이터베이스는 DWH가 아닌 그냥 OLTP DB라고 부름.   => 보통 DWH는 ETL, DL은 ELT임.   DWH vs DM  데이터 모델링에 대한 더 자세한 팩트: 데이터 마트와 데이터 웨어하우스의 쓸모가 서로 다르므로, 당연히 저장하는 방식도 서로 다름. DWH는 기본적으로 무결성을 지키면서 저장하는 것, 그리고 모든 값들을 통합적으로 관리하는 것이 중요하므로 정규화도 하고, 그 계열의 스타, 스노우플레이크 스키마 등을 통해 모델링하지만, 데이터 마트는 분석 직전의 저장소이므로 분석을 위해 최적화, 즉 비정규화를 통해 조인을 최소화하고 사전 집계를 해서 빠른 분석 성능을 제공함.
[Spark] 캡스톤 프로젝트🚧: from HIVE to Kafka 프로젝트 개요 기본적으로, Gold 관련 정보를 담는 MDM 플랫폼이 있음.해당 플랫폼은 여러 Banking System으로부터 정보를 받아와서 저장함.동시에, 반대로 여러 수요자들에게 저장되었던 정보를 나눠주기도 함. 이때 우리가 집중할 부분은 오른쪽. 그러니까 MDM 플랫폼에서 각 수요자에게 데이터를 나눠주는 파이프라인을 구축하는 것이 미션임. 저 많은 수요자들에게 동시다발적으로 데이터를 공급한다면, MDM 플랫폼의 안정성이 떨어질 수 있음. 그래서 우리는, 중간에 Kafka를 배치해서 안정성을 높이려고 함. 이때 Kafka에서 다른 수요자들에게 어떻게 데이터를 분배하는지는 그 담당자가 할 일이고, 내가 할 일은, MDM 플랫폼에서 Kafka로 어떻게 정보를 옮기느냐임. 더 자세히 그 부분을 들여다보..
[Spark] A급 💯 데이터 엔지니어를 위한 Aggregations & Joins spark에서의 aggregation은 built-in functions으로 주로 쓰임.기본으로 아래 코드 필수임.from pyspark.sql import functions as f Aggregating Dataframes and Windows Functions아래와 같이, df의 sql like 방법 혹은 sqlexpr로 sql을 직접 갖다쓰는, 두가지의 방식이 모두 가능함. group by 도 마찬가지. sql을 갖다 쓸수도 있고, 아닐수도 있지만, 직접 갖다 안 쓸 이유를 모르겠음.  예를 들어 아래와 같은 결과물을 내고 싶다고 치자. Country와 WeekNumber를 composite key columns로 한다. 이를 SQL이 아닌 방식으로 처리하면 아래와 같은 코드가 나옴. 그러나 만약,..
[Spark] Spark의 꽃🌺, Transformations 기본적으로 spark는 데이터를 처리하기 위한 툴인만큼, 데이터 처리는 가장 핵심적인 요소. spark에서의 데이터 처리는 위의 항목들 정도로 정리할 수 있음.  Play with Dataframe Row 1 수동으로 row 및 dataframe 만들기예를 들어, 날짜 칸이 모두 date이 아닌 string 형태로 되어있는 녀석에 대한 conversion을 하는 함수를 만들때 쓰임.  2 driver에 dataframe row 모으기 위의 과정을 유닛 테스트로 발전시키고 싶다고 치자. 이때, 기본적으로 dataframe은 병렬화를 위해 많은 노드들에 분산 저장되어있기 때문에, 이따금씩 관련한 전체 데이터를 가지고 뭔가 처리가 필요할 때가 있다. 이때는 각 노드의 관련 데이터들을 모두 뭉쳐야 하기 때문에 ..
[Spark] Spark의 매우 도움되는 API 친구들 Spark 위에서 우리가 활용할 수 있는 녀석들은 RDD, Spark SQL, DataFrame, DataSet스파크가 처음 등장했을 때 분산처리를 위해 등장한 것이 RDD. 기본적인 동작은 되지만, 최적화도 직접 해줘야 하고, 암튼 오래된 냄새가 많이 남. 이후 Catalyst Optimizer라는 최적화 엔진이 등장하면서, 이 엔진의 최적화 대상이 아닌 RDD는 자연스레 사장되고, 그 대상인 Spark SQL, DataFrame, DataSet 이 각광 받음. 지금은 그 중에서도, 좀 쉬운 것들은 Spark SQL, 좀 어려운 건 DataFrame API로 어지간하면 다 처리하는 방식. 다만 이제 아무래도 DataFrame의 최적화가 테이블 형식의 데이터에만 적용되므로, 반정형, 비정형 데이터를 다룰..
[Spark] 본격적인 프로그래밍 on spark 🧑‍💻 PyCharm을 활용할 것. 처음에 PySpark, PyTest 라이브러리도 설치를 해준 채로 시작해야 함.  Application Logs Log4JLog4J를 활용해보자. Log4J란? 로깅 프레임워크인데, Apache에서 만든 거라 spark랑 잘 맞으므로 저걸 자주 같이 씀. 각종 configuration 있는데, 일회성의 것들이므로 skip forward...spark session의 configuration은 4가지가 있는데, 개발자로써 사용하는 건 보통 SparkConf나 spark-submit CLI 이렇게 두개임. 나중에 필요하면 그때 더 깊게 공부하면 됨.  Spark Session에 대하여* Driver가 곧 Spark Session이라고 일단은 이해하자.기본적으로 스파크 프로그램을 ..