분류 전체보기 185

[Airflow] - Airflow

오늘은 데이터엔지니어링의 핵심도구인 'Apache Airflow'에 대한 블로그를 작성해 보려고 합니다. Airflow는 데이터엔지니어(DE)와 데이터 애널리틱스 엔지니어(DAE)라면 반드시 알아야되는 툴중 하나입니다. 데이터 파이프라인을 구축하고 운영하는데 있어 핵심적인 역할을 하며, 복잡한 데이터 워크플로우를 효율적으로 관리할 수 있게 해주는 필수 도구입니다.AirflowAirflow는 'Job Orchestraion tool' 입니다. 풀어서 설명하면, 복잡한 데이터 처리 작업을 자동화하고 관리하는 도구입니다.마치 오케스트라 지휘자처럼 여러 작업의 실행순서와 의존성을 조율합니다. 에어플로우에선 데이터 파이프라인을 프로그래밍 방식으로 작성, 스케줄링 및 모니터링 할 수 있습니다. 주로 데이터엔지니어,..

Airflow 2026.04.05

[우아한테크세미나] - MLOps를 활용한 AI 서비스 개발 스토리 세미나 후기

이번에 우아한형제들에서 테크세미나의 주제를 AI와 MLOps로 정했다.온라인으로도 열심히 들었고 내용을 기억해보고자 정리해보려한다. youtube.com/watch?v=MA5A7Xqb-7U 1. 우아한 형제들의 AI 서비스1. 리뷰검수: 해당 이미지가 올바른 이미지인지 검수2. 배달 예상시간 예측3. 추천알고리즘4. 이상거래탐지, 서비스 이상탐지5. 메뉴명 분류6. 메뉴명 어뷰징2. AI 서비스를 적용할 때의 어려움문제 - 개발환경에서 운영환경으로 배포가 어려움:ML시스템의 복잡함과 다양한 개발환경에서 각각 다른 방식으로 개발하기 때문이다. 해결방법1. MLOps를 도입하여 모델 개발, 서빙, 배포를 효율적으로 하게 함2. 이를위해 MLOps Cycle과 AI Studio를 만듦 목표1. 모델개발에서 운..

책&스터디 2026.04.05

[Flink] - Apache Flink

이번블로그에서는 Flink에 대한 기본 개념과 내부구조, 장단점에 대해서 정리 해보도록 하겠습니다.Apache Flink[데이터 스트림에 대한 상태 기반 연산]Apache Flink는 제한되지 않은(스트림) 데이터 세트와 제한된(배치) 데이터 세트에 대한 상태 저장 처리를 위한 오픈 소스 분산 엔진입니다.Apache Flink는 유한 및 무한 데이터 스트림에 대한 상태 기반 연산을 처리하기 위한 프레임워크이자 분산 처리 엔진Flink는 모든 일반적인 클러스터 환경에서 실행되도록 설계되었으며, 인메모리 속도로 어떤 규모에서도 연산을 수행할 수 있도록 만들어짐 → YARN, Kubernetes(EKS 포함), Mesos, EMR, Standalone 등의 다양한 클러스터 환경에서 무리 없이 실행 가능하도록 ..

Flink 2026.03.29

[Spark] - Spark Performance Tuning

Spark를 사용하다 보면 단순한 코드 작성보다 더 중요한 것이 있습니다.바로 데이터를 어떻게 나누고, 어떻게 이동시키고, 어떻게 실행하느냐입니다.같은 코드라도 Partition, Shuffle, Join 전략에 따라 성능은 몇 배 이상 차이가 납니다.이 글에서는 Spark의 내부 실행 구조를 기반으로Compute, Data, Execution, Skew, AQE까지 이어지는 실무 성능 튜닝 프레임워크를 정리합니다.단순 개념이 아니라, “왜 느려지는지 → 어디를 봐야 하는지 → 어떻게 해결하는지” 흐름 중심으로 정리해보려 합니다.Spark Performance Tuning데이터 분배, 이동, 실행 방식을 최적화하여 처리 속도와 자원 효율을 개선하는 것 Spark 튜닝 프레임워크Spark Performan..

Spark 2026.03.28

[Spark] - Spark

Spark를 배우면서 정리를 위한 블로그를 작성해봤습니다. 제가 Spark를 배우면서 생각나는것들과 이해를 하기위해서 궁금했던것들을 종합적으로 찾아보고 정리하는 글입니다. 2편에서는 Spark Performance Tuning 관련된 긴 글을 작성해보려 합니다.하나하나의 피상적 정리를 벗어나 이론보다는 전체적인 그림과 연결점을 찾는 과정이라 생각해주시면 감사하겠습니다 :) Spark란Apache Spark는 대용량 데이터를 빠르게 처리하기 위한 분산처리 프레임워크Spark의 핵심개념분산처리 : 여러서버에서 동시에 처리하는방식인메모리: 데이터를 디스크가 아니라 RAM에 올려서 처리RDD: 여러 노드(서버)에 분산된, 변경 불가능한 데이터 집합분산처리의 장점수평적 확장성(Scale-out) : 단일 머신은..

Spark 2026.03.27

[Spark] - 파티션 최적화

이번 블로그에서는 파티셔닝을 최적화 하는 방법에 대해서 작성해보려 합니다.파티셔닝을 최적화 한다는게 어떤 뜻이냐면, Spark에서 데이터를 분산해서 파티션 단위로 저장하고 그것을 메모리 상이든 파일 단위에서 쓰고 있기를 할때 파티션 단위로 모든것을 처리합니다. 하지만 파티션을 어떻게 만드냐에 따라서 Spark는 파티션된 모든 파일을 읽어오거나 처리할 필요없이 특정 파티션만 다루면서 빠르게 효율적으로 Spark 연산을 극대화 시킬수있습니다. 실습을 위해서 단일 파티션말고 다중파티션을 만들기위해 여러개의 csv를 만들고, withColumn으로 각각의 어떤 행이 파티션 파일에 존재했는지 추적해나가는 과정입니다. 이걸 추적해나가는 과정을 사용하기위해 input_file_name을 import 하고,split을..

Spark 2026.03.25

[Spark] - Json 데이터 다루기(with_Explode)

이번블로그는 Json파일을 가져와서 데이터를 다루는 몇가지 방법을 알려드리겠습니다. opensource json example 5를 가져와서 다뤄봤습니다.아래 링크에 들어가서 데이터를 긁은다음에 json으로 변환해서 업로드후 사용하시면 됩니다.https://opensource.adobe.com/Spry/samples/data_region/JSONDataSetSample.html#Example5 Convert nested jsonbat_df = raw_df랑 join을 시켜주고 key와 상단에 나와있는 batters > batter 데이터를 불러왔습니다.스키마를 통해서 확인해보니 저렇게 가로로 되어있어서 하단이미지처럼 explode를 사용해서 데이터를 일렬로 나눠주는 모습입니다.explode = 폭파란뜻이..

Spark 2026.03.24

[Spark] - Null값 처리

NullNull값을 다루는 방법론에 대해서 여러가지 준비를 해봤습니다. 실제로 데이터를 불러오다 보면 데이터를 불러오는 과정에서 특정값에 어떤 오류가 있어서 Null값으로 처리되는 경우가 있거나 원래부터 데이터 값이 존재하지 않을 경우가 있습니다. 이 Null값을 어떻게 처리하냐에 따라서 특정 쿼리를 날릴때 어떤 Null값이 존재하는것을 지울것인지 채워 넣을것인지 아니면 그대로 둘것인지 의사결정을 할 필요가 있다. Null로 다루는 주제입니다.window를 사용하여 데이터의 일정부분 null 생성null 값을 가진 row 단순 제거null 값을 가진 row 제거의 다양한 방법론null 값 단순 채우기fill forward 방식으로 null 값 채우기fill backward 방식으로 null 값 채우기 w..

Spark 2026.03.24

[Spark] - 정규식을 통한 문자열 처리

정규식 표현을 통해서 문자열 데이터를 처리하는 방법을 실습을 통해 블로그를 작성해보았습니다.총 3가지로 나눠서 명령문을 나눠봤는데요.regexp_replacerlikeregexp_extractRegularExpressionReplace, RegularRlike라고 하는 명령어와 RegularExpressionExtract 라고 하는 명령어가 있습니다.해당 명령어는 실습내용을 통해서 설명하도록하겠습니다.이번에는 데이터를 다운받아서 csv를 가져와 실습하였습니다. 500redoce는 free이기 때문에 다운받아서 실습을 따라해보시는것도 추천드립니다.Free Sample Data Free Sample DataAlways test your software with a "worst-case scenario" am..

Spark 2026.03.23

[Spark] - Spark 기본 동작

1. RDDRDD는 "Resilient Distributed Dataset"의 약자로 탄력적인 분산 데이터셋이라는 의미다. 데이터를 클러스터 내에 분산 저장하고, 하나의 파일처럼 읽고 쓰는 것이 가능하다. 물리적으로 분산저장 되는 것이 아닌, 내부에 Logical Partition이 있고 해당 파티션 기준으로 물리적 노드에서 나누어 처리가 가능하다.RDD는 불변하는 특징을 가지고있다. RDD에 작업을 하게 되면 하나 혹은 다수의 RDD를 결과 값으로 받게 된다. 즉, 작업한 RDD는 변함없이 존재하고 작업이 반영된 새로운 RDD만 생성되는 것이다.2. Transformation / ActionRDD로 수행하는 동작은 Transformation / Action 으로 나누어 볼 수 있다. 먼저 Transfo..

Spark 2026.03.23