데이터엔지니어

AWS

[S3] 버킷 생성 및 boto3 파일 업로드, 파일 읽기 실습

이전 포스팅에 이어서, 직접 S3에서 버킷을 생성해보고, 접근 권한을 퍼블릭으로 전환한 뒤, 로컬 환경에서 S3에 JSON 파일을 GET, POST 해보는 방법을 포스팅해보겠습니다!! 버킷 생성(권한 : 퍼블릭 액세스) (1) 먼저 S3 사이트에 접속하고 버킷 만들기를 클릭합니다. (2) 버킷 이름은 전역 고유기 때문에, 잘 작성해주시고, 리전을 선택하신 뒤 넘어갑니다. (3) 이 부분을 액세스 차단을 해제해줍니다. 퍼블릭 액세스 관련 옵션인데, 퍼블릭 액세스를 켜려면 이 부분을 해제 해주셔야합니다. (4) 다른 옵션은 그대로 두고, 버킷을 만듭니다. (5) 일단 버킷을 생성하면, 저 부분이 퍼블랙 액세스 가능이 아니라, 퍼블릭 액세스 가능하게 할 수 있음?? 이렇게 적혀 있을 겁니다. 저희의 목표는 퍼..

AWS

[S3] AMZON S3 기초개념

본 포스팅은 유튜브 AWS 강의실 님의, 강의를 바탕으로 작성되었습니다. https://www.youtube.com/watch?v=LazOCTfdSeQ&list=PLfth0bK2MgIan-SzGpHIbfnCnjj583K2m&index=21 S3 S3는 SIMPLE STORAGE SERVICE로, S 3개를 포함해서 S3라고 부릅니다. S3는 99.999999999%(eleven nine) 내구성을 제공합니다. 전 세계 기업의 수백만 애플리케이션을 위한 데이터를 저장합니다. 이는 객체 스토리지 서비스로, 파일을 저장하기 위해서 사용됩니다. 단 S3는 이런 특징을 가집니다. 애플리케이션 설치 불가능 글로벌 서비스 단, 데이터는 리전에 저장 데이터가 해당 리전을 나가지 않아야합니다. 무제한 용량 하나의 객체는..

프로젝트 회고록/음악 평론 웹 제작 프로젝트

1. SPOTIFY API로 데이터 추출하기

안녕하세요! 저번에는 음악 평론 웹 제작 프로젝트를 미니 프로젝트로 진행하면서, 웹의 뼈대 정도는 만들어둔 상황입니다. 아직 프론트도 제대로 구현되지 않았고, 백 쪽도 확실하게 되진 않았습니다!! 전부 완성이 되면 기능 소개글도 한번 올려보겠습니다. 그런데 뒤에 데이터 파이프라인을 만들기가, 영 쉽지 않습니다.... 특히 SPOTIFY API 에서 주는 데이터들이 그렇게 친절하지 않아서..? 직접 오류를 제어하면서 뽑는 코드를 만들려니 고생 꽤나 했는데, 재밌습니다..하하; 그래서 SPOTIPY라는 누군가 만들어둔 라이브러리를 발견하고 쓰려고 했는데, 이건 오류제어를 하면서, 계속해서 API 호출을 할 수 없었습니다. 그래서 대표적인 에러를 제어하는 방식으로, 모듈을 조금 만들어봤습니다. 일단은 데이터엔..

데이터 엔지니어링/실리콘밸리에서 날아온 데이터엔지니어링 스타터 키트

[7주차] SPARK 기본 개념 및 PANDAS와의 비교

SPARK 버클리 대학의 AMPLab에서 아파치 오픈소스 프로젝트로 2013년 시작한 프레임워크입니다. 하둡의 뒤를 잇는 2세대 빅데이터 기술로, Yarn(Yarn은 Hadoop 2.0, 3.0을 말한다고 보시면 됩니다.)을 분산환경으로 사용하고 Scala로 작성되었습니다. 일단 Spark의 기본적인 개념은 분산, 병렬 처리입니다. 데이터를 나누고 이 각각, Block(Partition)을 따로 가공 및 정제 후에 합치는 방식입니다. Spark은 하둡의 Mapreduce 방식과 다르게 디스크에 저장하는 방식이 아닌, 메모리에 저장함으로써 속도를 월등히 높였습니다. 특히 MapReduce는 프로그래밍에서 사용할 수 있는 Operator가 딱 두 개였고, SQL로 치면 GROUP BY, CASE WHEN 정..

데이터 엔지니어링/하둡 에코 시스템

[Flume] 기본 개념 및 설치

Flume(with Kafka) Flume은 대규모 데이터 처리를 위한 분산형 데이터 수집 도구입니다. Flume은 데이터를 수집하고 처리하여 저장소 또는 전송 수단으로 전송합니다. Flume은 다양한 데이터 소스 (예 : 로그 파일, 소켓 등)에서 데이터를 수집하고, 이를 다양한 대상 (예 : HDFS, Kafka 등)으로 전송할 수 있습니다. Flume은 이러한 과정에서 데이터를 중간 단계에서 필터링하거나 변환할 수도 있습니다. Flume은 Kafka와 자주 사용됩니다. Kafka는 분산형 스트리밍 플랫폼으로, 대용량 실시간 데이터 스트리밍 및 처리에 사용됩니다. Kafka는 대규모의 메시지를 안정적이고 신뢰성 높은 방식으로 처리하며, 다양한 데이터 소스에서 데이터를 수집하고 다양한 대상으로 전송할 ..

데이터 엔지니어링/실리콘밸리에서 날아온 데이터엔지니어링 스타터 키트

[6주차] Dag Dependencies(Explicit Trigger, Reactive trigger, BranchPythonOperator)

Dag간 실행순서를 정하기 위해서는 Dag Dependencies를 활용하면 됩니다. 즉 어떤 Dag가 실행되면, 따라오는 Dag가 있게끔 설정하는 것이 가능합니다. 보통 TriggerDagOperator를 쓰는데, ExternalTaskSensor는 성능 상의 이유로 잘 쓰지 않습니다. 이유는 후술하겠습니다! Explicit Trigger 이 Trigger 방법은 한 Dag는 다음 Dag를 트리거 시킵니다. 한 방법으로, DAG A의 태스크를 TriggerDagRunOperator로 구현하는 방법입니다. 트리거 A는 다음과 같이 구현하면 됩니다. 이때 유의할 점은 반드시 airflow.cfg dag_run_conf_overrides_params가 True로 설정 되어 있어야합니다. from airflo..

데이터 엔지니어링/실리콘밸리에서 날아온 데이터엔지니어링 스타터 키트

[6주차] API & Airflow 모니터링

Airflow는 환경설정을 통해서, 웹 api를 외부에서 활용할 수 있습니다. Airflow API 활성화 airflow.cfg의 api 섹션에서 auth_backend의 값을 변경합니다. auth_backend = airflow.api.auth.backend.basic_auth airflow 웹서버를 재실행합니다. sudo systemctl restart airflow-webserver basic_auth 설정 재확인 sudo su airflow airflow config get-value api auth_backends Airflow Web UI 에서 새로운 사용자 추가 Security -> List Users -> + 이후 화면에서 새 사용자 정보를 추가 합니다(monitor:MonitorUser1..

데이터 엔지니어링/실리콘밸리에서 날아온 데이터엔지니어링 스타터 키트

[6주차] AIRFLOW SLACK 연동(파이프라인 에러메시지 받기)

슬랙 메시지를 활용해서 데이터파이프라인을 효율적으로 관리할 수 있습니다. 보통 현업에 계신 분들은 데이터파이프라인 에러를 슬랙으로 받고, 해당 메시지를 받으면 데이터 파이프라인을 backfill 혹은 복구하는 작업을 합니다. 이번엔 airflow와 슬랙을 연동해서 에러메세지를 받아보는 작업을 해보겠습니다. 1.Incoming Webhooks App 생성하기 https://api.slack.com/messaging/webhooks Sending messages using Incoming Webhooks Creating an Incoming Webhook gives you a unique URL to which you send a JSON payload with the message text and some..

데이터 엔지니어링/실리콘밸리에서 날아온 데이터엔지니어링 스타터 키트

[6주차] DOCKER & K8S & DBT

DOCKER DOCKER는 컴퓨터 안의 컴퓨터라고 생각하시면 좋습니다. 기존의 가상환경을 구축하는 것보다, 더 경량화된 컨테이너를 구축하는 작업이라고 보시면 됩니다. 다만 운영체제의 사양이 어느정도 받쳐줘야 사용할 수 있습니다. 특히 AIRFLOW의 경우에는 DOCKER CONTAINER에 8기가 정도의 메모리를 줘야 에어플로우를 쓰는데 문제가 없습니다. DOCKER IMAGE 단순히 응용 프로그램 뿐만 아니라 그 프로그램이 필요로 하는 모든 다른 환경까지 포함한 소프트웨어 패키지 Docker Registry에 가면 다양한 Docker Image들을 찾아볼 수 있습니다. Docker Container Docker Image를 Docker Engine에서 실행한 것을 지칭 Docker Engine만 실행하..

데이터 엔지니어링/실리콘밸리에서 날아온 데이터엔지니어링 스타터 키트

[5주차] Airflow + Redshift로 ELT 구현하기

이번 과제는 NPS를 구해서, 해당 NPS를 단 한번만 업데이트하는 ELT 구현입니다. NPS는 사용자의 서비스 추천정도를 물은 뒤에 0~10점으로 환산하여, 10점 혹은 9점을 준 고객의 비율에서 0~6점을 준 고객의 비율을 빼는 방법입니다. 간단하게 ELT를 구현하고 테스트 코드도 동시에 삽입해서 ELT 과정을 구현해보겠습니다. SQL 구현하기 저번 포스팅에서 만들어둔 nps 테이블을 활용하여 다음 SQL을 준비합니다. SELECT DATE(created_at) AS date, CAST(CAST(COUNT(CASE WHEN score IN (9,10) THEN 1 END) - COUNT(CASE WHEN score IN (0,1,2,3,4,5,6) THEN 1 END) as FLOAT) / COUNT..

데이터 엔지니어링/실리콘밸리에서 날아온 데이터엔지니어링 스타터 키트

[5주차] Airflow BackFill(Incremental Update, execution_date)

BACKFILL 데이터파이프라인을 설계하고 운용할 때, 가끔 에러가 나거나, 이미 지난 날짜를 기준으로 데이터를 재처리 해야할 때가 있습니다. 이 때 백필은 재처리 작업을 의미합니다. 단어 의미 그대로 '매우는 작업'이라고 보시면 됩니다. Full Refrest를 한다면 backfill은 필요 없습니다. backfill은 일별 혹은 시간별 업데이트를 의미합니다. 마지막 업데이트 시간 기준 backfill을 하는 경우라면(데이터 웨어하우스 기록 시간 기준), execution_date을 이용한 backfill은 필요하지 않습니다. 데이터의 크기가 커질수록 backfill 기능을 구현해두는 것은 필수입니다. airflow는 이 backfill 작업을 굉장히 쉽게 만들지만, 데이터소스의 도움없인 불가능합니다...

데이터 엔지니어링/실리콘밸리에서 날아온 데이터엔지니어링 스타터 키트

[5주차] OLTP/OLAP, MYSQL 데이터 복사하기

5주차에 배운 내용들을 포스팅합니다. 먼저 OLTP와 OLAP의 차이에 대해 간단히 알아보도록 하겠습니다. OLTP VS OLAP OLTP(ONLINE TRASACTION PROCESSING) 온라인 트랜잭션 프로세싱, 즉 온라인에서 일어나는 데이터 교환에 중점을 두는 작업입니다. 데이터 처리 속도가 보다 중요하며, 큰 데이터를 다루기에는 적합하지 않습니다. 우리가 흔히 알고 있는 MYSQL, POSTGRESQL 같은 데이터베이스들이 이 작업에 중점을 둔 DB입니다. OLAP(ONLINE ANALYTIC PROCESSING) 온라인 애널리틱 프로세싱, 즉 분석을 중점을 두는 작업입니다. 데이터 처리 속도는 조금 떨어지더라도, 큰 과거 데이터를 활용해서 분석처리에 사용합니다. AWS REDSHIFT, GO..

우상욱
'데이터엔지니어' 태그의 글 목록 (8 Page)