목록Data Engineering (7)
내가 보려고 만든 블로그
DW ,DM을 정말 초창기부터 설계하는일은 경험하기가 쉽지 않은 것 같다 . 보통은 어느정도 자리잡은 회사에 들어가게 되니. 이걸 처음부터 설계한다고하면 어떻게 해야할까? BI ( Data Analyst를 위한 ) 와 DS( Data Scientist를 위한)를 나눠서 생각해보았다. 1. BI RAW 우선 기본적으로 DB에 있는 테이블들을 그대로 가져오는 작업을 하게 될 것이다. 데이터가 유실될 가능성이 있기도 하고 우선 복사해두면 데이터에 대해 추가적으로 변경을 한다고 할 때 다시 DB에 접근할 필요없이 RAW테이블을 통해 작업할 수 있기 떄문이다 . 어떻게 가공할지 여기부터가 진짜 시작이다. DB설계를 할 때 정규화등을 고려하여 테이블을 만들지만 , DW, DM은 좀 다르다. 최대한 반정규화 , 그렇..
요새 kafka, flink, spark 등등 자바로 만들어진 어플리케이션들도 python을 워낙 많이 지원하고 있어서 편리하다. Flink도 pyflink 라고 파이썬에서 flink 개발을 할 수 있도록 도와주는 라이브러리가 있어서 이를 간단히 정리하고자 한다. 사실 이 글은 지금 패스트캠퍼스에 있는 강의를 참고해서 올리는데 코드의 세부 로직보다는 이런식으로 사용을 하는구나 정도를 정리함. flink를 사용하는 방법이 여러가지가 있지만 쿼리형태로 source table , sink table 지정해서 사용하는게 제일 편리한 것 같아 이방법으로 정리함. flink에서 가장 많이 사용되는 형태인 Kafka 를 통해 메세지를 받고 이를 가공해서 file이나 db등으로 보내는 것 을 예제로 담음. ( kafk..
등장 배경: 빅데이터 개념이 등장하면서 일단 데이터를 Data Lake에 던지고 보는 환경이 만들어짐. 이렇게 스키마 없이 저장된 데이터들을 편하게? 가져오기 위해 하이브가 등장하게 됨. 1. 하이브의 가장 큰 특징은 메타스토어에 스키마를 정의하고 저장된 데이터에 스키마를 입힐 수 가 있다. 2. 하이브 테이블에서 쿼리를 통해 데이터를 가져올때 파티션을 안걸면 혼쭐이 나는 경우가 많은데하이브 쿼리에서는 select * from where today ='20221010' 와 같이 컬럼처럼 사용하는 경우가 많지만 실제로 테이블에 컬럼으로 존재하는 것이 아니라 폴더 혹은 디렉토리가 파티션이 된다. 위 사진은 파티션이 today로 지정되있고 today = 20221010 이라는 파티션안에 000000_0 과 0..
AWS가 GUI를 제공하여 손쉽게 파일을 관리할 수 있긴 하지만 파일의 수가 많아지면 이를 일일이 다 클릭기반으로 관리할 수가 없다. 이때 필요한 것이 바로 Boto3이다. AWS에서 제공하는 sdk로 이를 이용해 S3도 손쉽게 다룰 수있다. import boto3 s3 = boto3.client('s3' , region_name = 'ap-northeast-2') obj_list = s3.list_objects(Bucket ='amplitude-class101-41574' , Prefix = 'class101/194714' ) contents = obj_list['Contents'] 위와 같이 버켓내 파일들의 리스트를 볼 수 가 있다. paginator = s3.get_paginator('list_ob..
회사에서 사용하고 있는 앰플리튜드의 일부 로그데이터를 적재해야 하는 일을 맡게 되었다. 앰플리튜드에서 제공하는 기능 덕분에 데이터를 적재하는 것은 어렵지 않았으나, 데이터가 다음과 같이 1. 압축된 형태로 들어왔으며 2. complete이라는 파일이 같이 적재가 되어 Glue 크롤러를 통해 읽어올 수가 없었다. ETL을 위해 새로 코드를 짜야 할 만큼 큰 작업은 아니기에 glue studio를 통해 간단하게 처리를 해보기로 하였다. 스파크 기반이며 클릭기반으로 ETL을 할 수 있도록 UI를 제공한다. 하지만 아직 베타서비스인지 ETL을 하며 2가지 버그를 발견하였다. 사용법은 매우 간단해서 Extract 해 올 디렉토리 , 저장할 공간 , 파일 타입등을 지정만 해주면 된다. 만일 추가적으로 코드를 손보고..
패스트 캠퍼스에서 진행하는 Spark 강의를 듣게 되었다. 강의 내용을 그대로 요약하고 적는건 저작권 침해 일수도 있겠단 생각이 들어 매주 수업 들은내용에서 알게 된점과 느낀점 등을 나중에 떠올려 볼수 있게 간단하게 적어보려고 한다. 우선 강의를 시작하며 가장 좋았던 점은 실습환경을 강사님이 다 준비해주셨다. AWS에 emr 서비스가 아닌 4개의 인스턴스를 띄운 후 클러스터로 구성해주셨다. 그리고 클러스터안에 실습에 필요한 하둡, 스파크 ,제플린 등등을 설치를 다해주셨다. 꽤나 고생하셨겠단 생각이 든다. 준비해주신 클러스터에 ssh spark@ 를 통해 접속할 수 있었고 etc/hosts 에 ip와 name을 지정해두면 서버 네임으로 접속을 할 수 있었다. 스파크에 대해 설명해주신 것들을 인상..