본문 바로가기

분류 전체보기545

ETL ELT 차이 | 요즘엔 ETL에서 ELT로 흐름이 바뀌고 있다?@! ETL이란? Extract, Transform, Load 의 앞글자를 딴 용어인데, 여러가지 데이터소스에서 추출(Extract)하고, 데이터를 원하는 형태로 변형(Transform)하고, DW로 적재(Load)하는 과정. 즉, 데이터소스에서 가져온 rawdata로 데이터웨어하우스에 바로 저장할 수 없으니 ETL과정이 필요하다. 핵심은 Tranform하는 단계. 비즈니스 또는 분석용도에 맞춰 데이터를 잘 정제해야한다. 당연히 데이터크기가 크면 클수록, Tranform하는 시간도 오래걸린다. ETL파이프라인이 설계된 후에는 1일1회 등 방식으로 업데이트된 내용을 다시 가져와서 새로운 내용을 저장한다. ELT란? 요즘에는 ETL에서 ELT방식으로 흐름이 바뀌고 있다. T와 L의 위치가 바뀐 ELT 기존의 EL.. 2021. 8. 16.
[데엔스터디2] 데이터엔지니어링을 위한 데이터웨어하우스(RedShift) 데이터엔지니어링 스타터 키트 - 2주차 후기 아래의 내용은 직접 유료강의를 수강하고, 배운점 및 추가로 공부한 내용을 기록한 내용입니다. 프로그래머스에서 진행하는 실리콘밸리에서 날아온 데이터엔지니어링 스타터키트 강의추전! 2주차 내용 1. 데이터엔지니어링 ETL파이프라인 작성 흩어져있는 데이터를 수집해서, 원하는 포맷으로 변형하고, DW에 적재하는 ETL 파이프라인 작성 (코딩필요) 데이터의 크기와 양에 따라서 pandas로 끝나기도 하고, Spark를 사용해서 분산처리를 해야할 수도 있다. ETL파이프라인 관리 초기엔 Crontab으로 관리를 자동화하지만, ETL수가 늘어나면 관리를 편하게 할 수 있는 프레임워크 Airflow를 사용 데이터엔지니어의 일주일 (in 유데미) 월요일 , "sprint 계획.. 2021. 8. 15.
[데엔스터디1] 데이터팀과 데이터엔지니어 데이터엔지니어링 스타터 키트 -1주차 리뷰 아래의 내용은 직접 유료강의를 수강하고, 배운점 및 추가로 공부한 내용을 기록한 내용입니다. 프로그래머스에서 진행하는 실리콘밸리에서 날아온 데이터엔지니어링 스타터키트 강의추전! 1.강의소개 강사 및 수강생 소개 배움의 패턴 공부하는 시간만큼 실력이 늘다가 언젠가 정체기가 온다 -> 그때를 잘 버텨야한다! 어떻게 이겨낼 것인가? 버팀, 적어도 3~6개월 풀타임공부. 내가어디에서 막혔는지 자문하고 질문하기 잘하는 사람 보고 기죽지 않기, 남하고 비교하지 않기 [요즘 나의 생각] 사실 요즘 '질문을 통해서 성장한다' 는 역시나 진리구나.. 를 다시한번 생각하게 되었다. 반전이게도 내가 성장하기보다 타인을 통해서 깨닫고 반성하게 되었다. 다른 교육강의를 들으면서 프로젝.. 2021. 8. 15.
[데엔스터디0] 신청계기와 커리큘럼 그리고 얻고 싶은 것! 데이터엔지니어링 스타터 키트 후기 어떻게 알게 되었는가? 나는 처음부터 데이터엔지니어링에 관심이 많았다. 그래서 데이터엔지니어 채용 / 데이터엔지니어 신입 / 데이터엔지니어 취업 이렇게 자주 검색하고 후기를 찾아본다. 그러던 중에 이분의 후기를 알게 되었다. 데이터엔지니어로 취업하기까지 회고록을 작성하였는데 여기에서 이분이 수강하셨다고 봐서 알게되었다! 그리고 알고보니 실제로 데이터엔지니어 현직자 사이에서도 만족도가 높은걸로 유명한 강의였다! 기대되는 커리큘럼 프로그래머스 데이터엔지니어 스터디 (실리콘밸리에서 날아온 데니어링 스타터 키트) 스터디는 한기용님이 진행해주시고, 비록 6주동안 진행되는거지만 생각보다 구성이 알찬것 같다. 간략하게 커리큘럼을 살펴보면 이렇다. 특히 데이터웨어하우스로는 Redshi.. 2021. 8. 14.
[SQL고급] rank함수 - 랭킹(순위) 구하기 (MySQL 8버전) 예를 들어 id, amount(금액)에 관련된 데이터가 있다고 치자. 이때 금액이 많은 순대로 순위를 매기고 싶다면? 여러가지 방법이 있다. 특히 mysql8 버전이라면 rank함수를 이용할 수 있으니 이걸 기억하자! 1. 사용자정의 변수 이용 SELECT id, amount,(@rank := @rank + 1 ) AS ranking FROM ex_card AS a,(select @rank := 0 ) AS b ORDER BY a.amount DESC; 사실상 순위를 직접 뽑아낸다기보다 rownum을 계산해서 그걸 순위인것처럼 사용하는걸로 볼 수 있다. 그래서 보통 변수명을 rownum으로 사용하는 경우가 많다. 그리고 하나의 row가 생길때마다 랭킹이 하나씩 더해지는 방식이기 때문에 정렬을 하고 같은 .. 2021. 8. 14.
[카카오][Python] 순위검색 - combination 그리고 이진탐색 아래의 문제는 카카오 채용 코딩테스트 내용이며 코드는 직접 푼 내용입니다. 순위검색 https://programmers.co.kr/learn/courses/30/lessons/72412 0: start=0 end=len(scoreList) while start= query_score: end = mid else: start = mid+1 answer.append(len(scoreList)-start) #3-1.쿼리에 해당하는 score가 없을때 else: answer.append(0) return answer 결과 내가 나름 이해하면서 작성한 주석까지 포함한다. from collections import defaultdic.. 2021. 8. 13.
[Kafka] Docker로 Kafka구축하기 | 트위터API사용해서 실시간데이터 전송하기 이번엔 실제 트위터 실시간 데이터를 kafka로 보내려고 한다!! 두둥! 기대된다. 이걸 하기 위해선 트위터 key가 필요하다 (무려4개나..) 그래서 트위터api 사용 신청을 사전에 해야한다! 나는 이미 빅데이터를 지탱하는 기술 책의 실습을 진행하기 위해서 신청받았었다! (엄청오래걸리고 승인이 까다롭다ㅠ) Producer 구현 나는 트위터의 실시간데이터 중에서 '김연경'키워드를 가지고 필터링을 할 예정이다. 이걸 실행하면 필터링한 데이터를 producer가 가져와서 consumer에서 보이겟지!? from tweepy.streaming import StreamListener from tweepy import OAuthHandler from tweepy import Stream from kafka imp.. 2021. 8. 11.
[Kafka] Docker로 Kafka 구축하기 | Python으로 Producer,Consumer 구현 Kafka 테스트해보기2-Python으로 메세지 생성 이번엔 이렇게 python으로 Producer와 Comsumer를 구현해 볼 것이다. 그래서 연속적으로 데이터를 보내는걸 테스트해보려고 한다. Producer 구현 from kafka import KafkaProducer from json import dumps import time topic_name = "topic_test" producer = KafkaProducer( acks=0, compression_type='gzip', bootstrap_servers=['localhost:9092'], value_serializer=lambda x: dumps(x).encode('utf-8') ) start = time.time() print("[begi.. 2021. 8. 11.
[Kafka] Docker로 Kafka 구축하기 | Producer에서 Consumer로 메세지 전송 목표 카프카를 이전에 간단한 이론정도로 학습해봤지만, 뭔가 제대로 와닿은 느낌이 없었다. 그냥 대략적으로 훑어본 수준이고, 프로젝트를 하긴 했지만 뭔가 시착오가 있어서 제대로된 결과물이 만족스럽지 않아서 다시 도전 해보려고한다! 특히 그때는 ec2에다가 직접 카프카를 설치했지만, 이번엔 도커로 해보자! 그래서 나의 목표는 아래와 같이 3가지이다. - docker로 카프카 구축해보기 : topic만들고, 메세지를 직접 입력해보면서 프로듀서와 컨슈머 확인해보기 - Python으로 실시간 데이터 전송하기 : 연속적으로 들어오는 임의의 데이터를 python으로 만들고 메세지 전송확인하기 - 트위터API를 사용해서 실제데이터 전송하기 : 이제 python코드를 직접 수정해서 실제 데이터를 전송해보는 것이다. Do.. 2021. 8. 10.
음악추천챗봇10. S3데이터 PySpark처리 및 시각화 (Zeppelin) 앞에서 구축한 EMR클러스터를 실행한다. 1. Zeppelin에서 s3에 있는 데이터가져오기 load이후에 들어갈 값은 s3의 URI이다. top_tracks 데이터 가져오기 %pyspark from datetime import datetime toptrack_raw = sqlContext.read.format("parquet").load("s3://musicdatalake/top-tracks/dt=2021-08-02/top_tracks.parquet") print(type(toptrack_raw)) toptrack_raw.printSchema() toptrack_df = toptrack_raw.toDF('track_id','artist_id','track_name','popularity','extern.. 2021. 8. 9.