전체 글

데이터 엔지니어링/Spark

4. Spark 프로그래밍 : DataFrame(데이터처리, 동작구조)

1. Spark 데이터 시스템 아키텍처 adhoc 형태의 인터랙티브 쿼리를 날리거나 할 때, presto나 hive를 써도 큰 상관이 없다. 다만 Spark으로 옮겨가는 이유는 하나의 시스템으로 다양한 기능을 할 수 있기 때문이다. 외부 데이터(RDB, NOSQL)는 로딩해서 프로세싱해서 데이터엔지니어들이 HDFS로 주기적으로 읽어오게 한다. 보통 ETL JOB 스케줄을 위해서는 AIRFLOW를 사용한다. 다른 방법으로는 SPARK에서 로딩을 해서 보내는 거다. SPARK STREAMING 배치로 SPARK SQL 활용 LOAD 하는 곳은 NOSQL, RDB, 데이터 레이크가 될 수도 있다. DATA STRUCTURE들이 나뉘어서 SPARK에 LOAD 된다. 데이터 병렬처리가 가능하려면? 데이터가 먼저 ..

데이터 엔지니어링/Spark

3. 빅데이터 처리와 Spark 소개(Spark 소개, Spark 프로그램 실행 옵션)

1. Spark 소개 버클리 대학의 AMPlab에서 아파치 오픈소스 프로젝트로 2013 시작 나중에 DataBricks라는 스타트업 창업 하둡의 뒤를 잇는 2세대 빅데이터 기술 YARN등을 분산환경으로 사용 Scala로 작성됨 빅데이터 처리 관련 다양한 기능 제공 Spark 3.0의 구성 Spark Core Spark SQL Spark ML : 데이터프레임 기반 Spark MLlib : RDD라는 데이터 스트럭처 기반(없어지는 단계) Spark Streaming Spark GraphX Spark vs MapReduce Spark은 기본적으로 메모리 기반 메모리가 부족해지면 디스크 사용 MapReduce는 디스크 기반 MapReduce는 하둡(YARN) 위에서만 동작 Spark은 하둡(YARN) 이외에도 ..

데이터 엔지니어링/Spark

2. 빅데이터 처리와 Spark 소개(맵리듀스 프로그래밍)

1. 맵리듀스 프로그래밍의 특징 데이터 셋은 Key, Value의 집합이며 변경 불가(immutable) 데이터 조작은 map과 reduce 두 개의 오퍼레이션으로만 가능 이 두 오퍼레이션은 항상 하나의 쌍으로 연속으로 실행됨 이 두 오퍼레이션의 코드를 개발자가 채워야함 나머지는 시스템이 다 알아서 함 맵리듀스 시스템이 Map의 결과를 Reduce 단으로 모아줌 이 단계를 보통 셔플링이라 부르며 네트워크 단을 통한 데이터 이동이 생김 같은 키의 값들을 묶어서 밸류를 묶어주는 게 reduce 이 과정이 셔플링 map이 돌아가는 서버와 reduce 돌아가는 서버가 다르기 때문에, 네트워크를 통한 데이터 전송 이 셔플링 과정이 길어질 경우, 데이터 처리 과정이 길어짐 맵 리듀스 프로그래밍의 핵심 : 맵과 리듀..

데이터 엔지니어링/Spark

1. 빅데이터 처리와 Spark 소개(빅데이터 정의, 하둡 이론 등)

1. 빅데이터 정의와 예 빅데이터의 정의 (1) 빅데이터의 정의 1 서버 한대로 처리할 수 없는 규모의 데이터 2012년 4월 아마존 클라우드 컨퍼런스에서 아마존의 data scientist인 존 라우저가 내린 정의 분산 환경이 필요하느냐에 포커스 판다스로 처리해야할 데이터가 너무 커서 처리가 불가능하다면 어떻게 할 것인가? (2) 빅데이터의 정의 2 기존의 소프트웨어로는 처리할 수 없는 규모의 데이터 대표적인 기존 소프트웨어 오라클이나 MySQL과 같은 관계형 데이터베이스 분산환경을 염두하지 않음 Scale-Up 접근 방식(vs. Scale-out) 메모리 추가, CPU 추가, 디스크 추가 (3) 빅데이터의 정의 3 4V(Volume, Velocity, Variety, Varecity) Volume :..

일기

다시 시작하기

플레이데이터 국비교육과정도 끝났고, 실날데 데이터엔지니어링 과정도 전부 마쳤습니다. 6월 30일에 마치고 난 후에, 잠시 정리하고 예비군 2박 3일 다녀오니 예비군 4년차도 끝났습니다. 그런데 지난 6개월 간의 자료 정리하면서 차근차근 돌아보니, 잘한 점도 많지만 아쉬운 점도 꽤나 남습니다. 지금 제 스스로 돌아본 결과는 이렇습니다. CS 지식 정보처리기사를 취득한 후에야, CS 지식이 어느정도 가닥이 잡혔다고 생각했지만, 여러 지식들이 산재해있는 느낌입니다. 머릿 속에 완벽하게 정리된 것도 아닌 것 같구요. 프로젝트를 하면서, 그리고 공부를 해오면서 느낀거지만, 정말 우리가 쓰는 파이썬이나 자바, 뭐 각종 하둡 에코 시스템에 쓰이는 것들 전부 그저 사용이 편리한 도구에 지나지 않았나?라는 생각이 듭니다..

프로젝트 회고록/[최종프로젝트]서울시 혼잡도 데이터를 활용한 안전·문화생활 통합 웹사이트

서울시 혼잡도 데이터를 활용한 안전·문화생활 통합 웹사이트

플레이데이터 최종프로젝트를 마치고 나서 쓰는 회고록입니다. 역할 별로 글을 다 쓰면 너무 길어질 것 같아서, 제 파트 위주로 게시합니다! 더 궁금하신 사항이 있으시다면, 맨 하단에 git 주소를 참고해주세요! 1. 프로젝트 소개 서울시 발생 사고로 인한 혼잡도에 대한 관심 급증으로 인해서, 안전성과 여가·문화 생활을 결합한 종합 정보 제공 웹 서비스를 제공하고 싶었습니다. 따라서 저희 팀은 다양한 소스에서 온 데이터를 통합하고, 분석하고, 예측하는 일련의 과정을 웹서비스에 전부 담았습니다. (1) 팀원별 역할 우상욱(팀장) : 데이터엔지니어링 (1) 데이터베이스 설계 및 구축 (2) 맛집, 명소 데이터 크롤링 (3) Airflow 활용 운영 데이터 파이프라인 설계 및 구축 (4) Aws Lambda 활용..

일기

플레이데이터 데이터엔지니어링 트랙 완강 후기

안녕하세요. 오늘은 플레이데이터 엔지니어링 트랙 완강을 한 후기에 대해서 글을 써보겠습니닷.. 부트캠프에 가려고 마음 먹었을 때를 생각해보면, 수강 기간동안 정말 알차게 보냈지만, 이제 정말 시작이구나라는 마음입니다. 오늘은 6개월 동안의 기간 동안 제가 뭘 했는지, 그리고 어떤 생각들이 들었었는지 정리해보겠습니다. 12월(수강 전) 플레이데이터 데이터 엔지니어링 트랙 시작 사실 저는 데이터 전문 스타트업에서 약 8개월 간, 인턴 근무를 했었습니다. 데이터 분석팀이였지만, 데이터 분석 일보다는 데이터엔지니어링?이라고는 애매하지만, 데이터를 가공하고 정제, 크롤링하는 일들을 했었습니다. 예전에 SBA에서 창업육성팀에서도 6개월 정도 인턴을 해봤었는데, 데이터를 가공하면서 이렇게 재밌는 일을 하면서 돈을 번..

AWS

[AWS REDSHIFT] AIRFLOW S3 → Redshift UPSERT 관련 에러('syntax error at or near "#"')

먼저 이 글은 저와 같이 REDSHIFT를 AIRFLOW와 연동해서 쓸 때 생기는 문제에 관한 글입니다. 문서가 너무 없고, 저만 겪는 상황 같아서, 열심히 삽질한 결과 작성해놓습니다. 이 글을 읽어보실 분들의 조건은 다음과 같습니다. 1. 에러 상황 (1) Redshift Cluster 사용 (2) Delimited identifiers를 사용하지 않으면, Syntax Error가 발생하는가? (3) Airflow S3ToRedshiftOperator를 사용해서, UPSERT 방식으로 데이터를 redshift에 로드하려고 하는가? (4) Schema, Table 명을 Delimited identifiers를 사용해서 구성했는가? 여기까지 오셨으면 저랑 같은 상황입니다.. 일단 웹에 관련 정보는 없어서 ..

AWS

[AWS LAMBDA] DOCKER 활용 AWS LAMBDA 딥러닝 모델 적용

안녕하세요. 오늘은 DOCKER를 활용해서 딥러닝 모델이 포함된 이미지를 만들고, 이미지를 통해서 AWS LAMBDA로 매번 호출해보겠습니다. 이번에 프로젝트에서 사용되는 로직은 다음과 같습니다. DB에 있는 리뷰 데이터(restaurant_review 테이블) 호출 리뷰 데이터를 자연어 처리를 통해서 긍/부정 이진 분류 긍정 값으로 분류된 확률 값(0 ~ 1 사이)을 새로운 컬럼으로 생성 restaurant_id를 기준으로 긍정 확률 평균값 생성 해당 평균 값에 5를 곱해서, 5점 만점의 리뷰 포인트 집계된 데이터를 restaurant 테이블의 star_rating 컬럼에 업데이트 하루에 한번씩 실행 이런 로직을 고민하고 만든 이유는, 최근 많은 사이트에서, 별점에 대한 신뢰성이 떨어진다는 여론과 이걸..

데이터 엔지니어링/Docker

[DOCKER] DOCKER 실습(feat. node.js)

이번 실습은 node.js를 활용해서 간단한 어플리케이션을 만들고, 이미지를 만든 후에, Container Registry에 Push하고, 해당 이미지를 가져와서 Container 내에서 어플리케이션을 구동시키는 실습을 진행해보겠습니다. 1. Docker / VSCODE extension 설치 https://www.docker.com/products/docker-desktop/ Download Docker Desktop | Docker Docker Desktop is available to download for free on Mac, Windows, or Linux operating systems. Get started with Docker today! www.docker.com 먼저 Docker를 설..

데이터 엔지니어링/Docker

[DOCKER] DOCKER 개념 정리

오늘은 DOCKER 개념 정리와 실습 포스팅을 해보겠습니다! DOCKER를 한번도 써본 적이 없는데, 사용할 필요성을 계속 느끼다가 이제서야 정리해봅니다. 사용하게 된 계기는 AWS LAMBDA에 TENSORFLOW 기반으로 작동되는 코드와 패키지들을 올리려고 하니, ZIP 파일 관련해서 250MB 제한이 있어서, 급히 공부 중입니다! 그러면 시작해보겠습니다. 오늘의 포스팅은 유튜브 '드림코딩'님의 영상을 참고하여 작성하였습니다. 이 글을 보기 보단, 영상으로 보시면서 실습해보시면, 이해가 빠르니 해당 영상으로 보시는 걸 더 추천 드립니다! https://www.youtube.com/watch?v=LXJhA3VWXFA 1. DOCKER 개념 Docker란 어플리케이션을 패키징 할 수 있는 툴입니다. Co..

데이터 분석 및 시각화/데이터 시각화

[SUPERSET] 대시보드 REACT 임베딩 하는법(동적 쿼리)

SUPERSET 관련해서, 임베딩 하는 법을 많이 찾아봤는데 자료가 그렇게 많진 않습니다. 그래서 삽질의 삽질을 거듭한 결과, 찾아낸 방법에 대해서 소개드립니다! 제 상황을 말씀드리면, SUPERSET에 있는 대시보드를 외부에 공개해야했고, SUPERSET 서버를 따로 써서 프론트에 임베딩해야하는 상황이였습니다. 이 과정에서 프론트 단에서 동적 쿼리를 전달할 방법이 필요한 상황이였습니다. 그래서 따로 superset 서버를 만들었고, 이 superset 대시보드를 프론트에 임베딩해서 보여줄 계획이였습니다. 서버 설정 OS : Ubuntu 22.04 Python : 3.10 Superset : 2.10 1. 설치 및 superset_config.py 파일 설정 설치 과정은 아래 링크에 적어놓았습니다. ht..

우상욱
데이터엔지니어스터디