반응형

Tools 51

Apache Iceberg 기본 동작 확인 및 실습 정리

📊 demo.analytics_users 테이블 상태 변화 요약Snapshot 단계 작업 내용 테이블 상태 (id, name)초기 생성INSERT (Alice, Bob)(1, 'Alice'), (2, 'Bob')Snapshot 2DELETE id = 2(1, 'Alice')Snapshot 3UPDATE id = 1(1, 'Charlie')Snapshot 4MERGE INTO (id = 3)(1, 'Charlie'), (3, 'David')Snapshot 5ROLLBACK to Snap 1(1, 'Alice'), (2, 'Bob')Snapshot 6INSERT (Eve)(1, 'Alice'), (2, 'Bob'), (4, 'Eve')✅ 1. Iceberg 테이블 생성 및 데이터 삽입📌 Spark SQL..

Tools/ETC 2025.07.06

Trino와 HyperLogLog 알고리즘

🧠 HyperLogLog핵심 아이디어"해시값에서 가장 긴 앞자리 0의 개수를 보면, 얼마나 많은 고유 값이 있었는지 추정할 수 있다."원소들을 해시 함수로 변환하고,해시값의 **이진 표현에서 가장 앞의 연속된 0의 길이(max leading zeros)**를 기록,이를 여러 버킷(bucket)에 나눠서 평균/보정하면 전체 고유 수를 추정할 수 있음.🔍 왜 효과적인가?해시값은 고유하게 퍼지기 때문에, 많은 고유 값이 들어오면 더 긴 연속된 0이 나타날 확률이 높아짐.이걸 통계적으로 계산하면 거의 선형적 정확도를 얻을 수 있음.📦 장점메모리 효율수십억 개 데이터를 추정하는 데 수 KB만 사용속도입력값 처리 시 해시 → 배열 업데이트만 하면 됨병렬 처리 용이HLL 스케치는 쉽게 merge 가능 → 분산 ..

Tools/ETC 2025.05.21

Docker 이미지, 캐시, 데몬, 빌드 프로세스

(1) Docker 이미지란?Docker 이미지는 컨테이너를 실행하는 데 필요한 모든 것을 포함한 불변(immutable)한 패키지입니다.이는 레이어(layer) 기반 파일 시스템으로 구성되어 있으며, 각 레이어는 아래와 같은 명령어에 의해 생성됩니다.FROM → 베이스 이미지 정의 (예: ubuntu:20.04)RUN → 명령어 실행 후 파일 시스템 변경 (예: apt-get install -y curl)COPY / ADD → 파일 복사CMD / ENTRYPOINT → 실행 명령어 지정각 명령어(RUN, COPY 등)는 새로운 레이어를 생성하며, 이러한 레이어는 Docker가 저장하고 관리합니다.(2) Docker 데몬(Docker Daemon)Docker 데몬(dockerd)은 컨테이너를 관리하는 백..

Tools/Docker 2025.03.10

Apache Iceberg 기본 구조

출처 : https://medium.com/data-engineer-things/i-spent-4-hours-learning-apache-iceberg-heres-what-i-found-9750b0d70d84 I spent 4 hours learning Apache Iceberg. Here’s what I found.The table format’s overview and architectureblog.det.lifeApache Iceberg가 필요한 이유 데이터 레이크하우스 솔루션을 배포할 때, 데이터는 오브젝트 스토리지에 저장되며, Spark나 Trino 같은 좋아하는 엔진을 사용해 쿼리를 실행할 수 있습니다. 데이터 이동이 필요 없고, 한 곳에서 애드혹 쿼리부터 머신러닝 워크로드까지 모두 처리할 수..

Tools/ETC 2025.01.16

FastAPI의 비동기 요청 처리

비동기 요청 처리1. 기본 개념비동기 요청 처리란?요청이 처리되는 동안 서버가 다른 요청을 처리할 수 있는 방식입니다.I/O 작업(예: DB 쿼리, 외부 API 호출)이 있을 때, 해당 작업이 끝날 때까지 기다리지 않고 다른 요청을 처리합니다.비동기의 장점:네트워크 대기나 파일 I/O 같은 느린 작업에서 CPU 자원을 효율적으로 활용.동시 요청을 더 많이 처리 가능.2. FastAPI에서 비동기 동작 확인FastAPI는 Python의 asyncio를 기반으로 동작합니다. 비동기 처리를 확인하려면 다음과 같은 방법으로 테스트할 수 있습니다.예제 코드아래 코드는 비동기 처리를 테스트하는 간단한 FastAPI 애플리케이션입니다:import asynciofrom fastapi import FastAPIapp =..

Tools/FastAPI 2024.11.27

FastAPI의 구조

FastAPI와 UvicornFastAPI란?FastAPI는 ASGI(Application Server Gateway Interface) 표준을 기반으로 동작하며, 일반적으로 Uvicorn이나 Hypercorn 같은 ASGI 서버와 함께 사용됩니다. FastAPI의 특징은 다음과 같습니다:ASGI 서버 의존성:FastAPI는 ASGI 표준에 맞춰 설계된 프레임워크입니다. Tomcat처럼 Java 기반의 웹 서버를 포함하는 것이 아니라, Python 생태계에서 널리 사용되는 Uvicorn 같은 경량 ASGI 서버를 통해 요청을 처리합니다.비동기 처리 지원:FastAPI는 Python의 asyncio 기반으로 동작하며, 비동기 처리를 기본으로 지원합니다. Tomcat과는 달리, Python의 비동기 모델과 ..

Tools/FastAPI 2024.11.13

Airflow Dag와 Task

1. DAG (Directed Acyclic Graph)정의: DAG는 Python 파일에서 정의됩니다. DAG는 워크플로우의 전체적인 구조와 실행 주기, 기본 설정 등을 포함합니다.작성 예시from airflow import DAGfrom datetime import datetime, timedeltadefault_args = { 'owner': 'airflow', 'depends_on_past': False, 'start_date': datetime(2024, 10, 1), 'retries': 1, 'retry_delay': timedelta(minutes=5),}dag = DAG( 'my_dag', # DAG 이름 default_args=default_args..

Tools/Airflow 2024.10.05

Docker Compose를 이용한 Airflow 설치

공식 문서 : https://airflow.apache.org/docs/apache-airflow/stable/howto/docker-compose/index.htmlAirflow Docker Compose Airflow를 Docker로 설치하려면 docker-compose.yaml 파일을 작성해야 합니다. 공식 Apache Airflow GitHub에서 제공하는 docker-compose.yaml 예시 파일을 사용하면 쉽게 설정할 수 있습니다.아래는 Airflow를 설치하기 위한 기본 docker-compose.yaml 파일입니다.더보기 # Licensed to the Apache Software Foundation (ASF) under one# or more contributor license agr..

Tools/Airflow 2024.10.01

Plant UML 기본 사용방법

https://plantuml.com/ko/설명PlantUML은 다이어그램과 차트를 만드는 데 사용되는 텍스트 기반 스크립팅 언어입니다. 소프트웨어 개발자들이 아키텍처나 설계를 문서화하는 데 자주 사용되며, 시퀀스 다이어그램, 유스케이스 다이어그램, 클래스 다이어그램 등 다양한 유형의 다이어그램을 지원합니다.PlantUML 문법을 배우는 것이 필요한지 여부는 여러분의 작업과 요구에 따라 달라질 수 있습니다. 만약 여러분이 다음과 같은 상황에 있다면 PlantUML을 배우는 것이 도움이 될 수 있습니다:소프트웨어 개발: 코드와 함께 시각적인 설계를 문서화하는 것이 중요하다면, PlantUML은 이를 효과적으로 도와줄 수 있습니다.프로젝트 관리: 프로젝트의 흐름이나 프로세스를 명확하게 보여줄 필요가 있을 때..

Tools/ETC 2024.07.30

Spark DataSet

Apache Spark에서 DataSet은 데이터를 강력하게 타입화된 방식으로 처리할 수 있는 분산 컬렉션입니다. DataSet API는 Spark 1.6에서 도입되었으며, DataFrame API와 RDD의 장점을 결합합니다. DataFrame이 제공하는 최적화된 실행 엔진을 이용하면서도, RDD처럼 컴파일 시간에 타입 안정성을 제공합니다. python에서의 DataSet 예제다음은 python를 사용한 DataSet 예제입니다. 이 예제에서는 간단한 클래스 Person을 정의하고 이를 이용하여 DataSet을 생성하고 조작하는 방법을 보여줍니다. from pyspark.sql import SparkSessiondef main(): # SparkSession 초기화 spark = Sp..

Tools/Spark 2024.05.29
반응형