<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://clsclffk.github.io/</id><title>DE Log</title><subtitle>데이터 엔지니어링 블로그 | Airflow, dbt, Spark, BigQuery, Kafka, Docker 트러블슈팅 기록</subtitle> <updated>2026-10-26T23:41:18+09:00</updated> <author> <name>jisu</name> <uri>https://clsclffk.github.io/</uri> </author><link rel="self" type="application/atom+xml" href="https://clsclffk.github.io/feed.xml"/><link rel="alternate" type="text/html" hreflang="ko-KR" href="https://clsclffk.github.io/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2026 jisu </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>Airflow Issue #62945 — forward reference warning 버그 분석</title><link href="https://clsclffk.github.io/posts/airflow-issue-62945/" rel="alternate" type="text/html" title="Airflow Issue #62945 — forward reference warning 버그 분석" /><published>2026-03-08T05:00:00+09:00</published> <updated>2026-03-13T15:14:23+09:00</updated> <id>https://clsclffk.github.io/posts/airflow-issue-62945/</id> <content type="text/html" src="https://clsclffk.github.io/posts/airflow-issue-62945/" /> <author> <name>jisu</name> </author> <category term="Data-Engineering" /> <summary>분석 계기 Apache Airflow 공식 저장소의 good first issue 레이블을 훑다가 이 이슈를 발견했다. 재현 코드도 명확하고 범위가 좁아서 분석해봤다. https://github.com/apache/airflow/issues/62945 문제 상황 Airflow에는 TaskFlow API라는 기능이 있는데, @task 데코레이터를 붙이면 일반 Python 함수가 Airflow Task로 동작한다. Airflow는 함수의 반환 타입을 기반으로 multiple_outputs 여부를 자동으로 추론한다. multiple_outputs는 반환값이 딕셔너리처럼 여러 출력으로 나뉘는지 여부를 나타내는 옵션이다. Airflow 2.x에서는 TYPE_CHECKING 블록 안에 있는 타입을...</summary> </entry> <entry><title>Docker에서 MySQL `LOAD DATA LOCAL INFILE` 에러 해결하기</title><link href="https://clsclffk.github.io/posts/docker-mysql-local_infile/" rel="alternate" type="text/html" title="Docker에서 MySQL `LOAD DATA LOCAL INFILE` 에러 해결하기" /><published>2025-11-03T10:00:00+09:00</published> <updated>2025-11-03T10:00:00+09:00</updated> <id>https://clsclffk.github.io/posts/docker-mysql-local_infile/</id> <content type="text/html" src="https://clsclffk.github.io/posts/docker-mysql-local_infile/" /> <author> <name>jisu</name> </author> <category term="Data Engineering" /> <summary>LOAD DATA LOCAL INFILE이란? MySQL에서는 로컬 파일 시스템에 있는 CSV나 TSV 데이터를 테이블로 불러올 때 LOAD DATA LOCAL INFILE 명령을 쓴다. 예시: LOAD DATA LOCAL INFILE &amp;#39;/path/to/data.csv&amp;#39; INTO TABLE users FIELDS TERMINATED BY &amp;#39;,&amp;#39; LINES TERMINATED BY &amp;#39;\n&amp;#39; (id, name, age); 이 명령을 사용하면 CSV 데이터를 빠르게 적재할 수 있다. 다만 보안상의 이유로 기본 설정에서는 비활성화되어 있어 에러가 발생할 수 있다. 문제 ETL 파이프라인을 Docker 환경에서 구성하면서 CSV 데이터를 MySQL에 적재하는 작업을 하던 중, load_data....</summary> </entry> <entry><title>StreamingQueryListener로 Spark Structured Streaming 메트릭 Prometheus에 노출하기</title><link href="https://clsclffk.github.io/posts/spark-streaming-prometheus/" rel="alternate" type="text/html" title="StreamingQueryListener로 Spark Structured Streaming 메트릭 Prometheus에 노출하기" /><published>2025-10-12T10:00:00+09:00</published> <updated>2025-10-12T10:00:00+09:00</updated> <id>https://clsclffk.github.io/posts/spark-streaming-prometheus/</id> <content type="text/html" src="https://clsclffk.github.io/posts/spark-streaming-prometheus/" /> <author> <name>jisu</name> </author> <category term="Data Engineering" /> <summary>개요 Spark Structured Streaming을 사용해 Kafka로부터 데이터를 처리하는 과정에서 inputRowsPerSecond, processedRowsPerSecond, batchDuration 등의 지표를 Prometheus로 수집해 모니터링할 수 있도록 구성했다. Spark 3.5 버전은 Prometheus Sink를 기본적으로 포함하지만, 도커 환경에서는 metrics.properties 설정이 올바르게 연결되지 않거나 포트 및 경로(/metrics/prometheus) 충돌로 인해 스트리밍 관련 메트릭이 Prometheus에 정상적으로 노출되지 않는 문제가 발생할 수 있다. 이 문제를 해결하기 위해 Stack Overflow – Spark 3.0 streaming metric...</summary> </entry> <entry><title>Prometheus로 EC2 서버 자원 모니터링하기 (Node Exporter + Grafana 연동)</title><link href="https://clsclffk.github.io/posts/prometheus-node-exporter-grafana/" rel="alternate" type="text/html" title="Prometheus로 EC2 서버 자원 모니터링하기 (Node Exporter + Grafana 연동)" /><published>2025-10-07T00:00:00+09:00</published> <updated>2025-10-07T00:00:00+09:00</updated> <id>https://clsclffk.github.io/posts/prometheus-node-exporter-grafana/</id> <content type="text/html" src="https://clsclffk.github.io/posts/prometheus-node-exporter-grafana/" /> <author> <name>jisu</name> </author> <category term="Data Engineering" /> <summary>배경 Prometheus로 Kafka와 Spark 애플리케이션을 모니터링한 뒤, 이번에는 EC2 서버 자체의 자원(CPU, 메모리, 디스크, 네트워크 등)을 모니터링하기 위해 Node Exporter를 설치하고 Grafana와 연동했다. 이 과정에서 포트 충돌, systemd 등록 오류, Grafana 대시보드 설정 등 실무에서도 자주 겪는 이슈를 정리했다. 1️⃣ Node Exporter 설치 Node Exporter는 Prometheus Node Exporter 공식 릴리스 페이지 아래 명령어로 최신 버전을 내려받고 압축을 해제했다. wget https://github.com/prometheus/node_exporter/releases/download/v1.9.1/node_expo...</summary> </entry> <entry><title>Prometheus에서 Kafka와 Spark 모니터링 설정 및 에러 해결기</title><link href="https://clsclffk.github.io/posts/prometheus-jmx-agent/" rel="alternate" type="text/html" title="Prometheus에서 Kafka와 Spark 모니터링 설정 및 에러 해결기" /><published>2025-10-06T21:00:00+09:00</published> <updated>2025-10-07T00:02:13+09:00</updated> <id>https://clsclffk.github.io/posts/prometheus-jmx-agent/</id> <content type="text/html" src="https://clsclffk.github.io/posts/prometheus-jmx-agent/" /> <author> <name>jisu</name> </author> <category term="Data Engineering" /> <summary>배경 Prometheus로 Kafka와 Spark의 상태를 모니터링하던 중 메트릭 수집 실패 및 포트 충돌 에러가 발생했다. Kafka와 Spark 모두 JVM 기반 애플리케이션이라 Prometheus에서 직접 지표를 긁어오려면 JMX Exporter 설정이 필요하다. 이번 글에서는 기존 사이드카 컨테이너 방식에서 Java Agent 방식으로 전환하면서 발생한 문제와 Kafka, Spark 각각의 해결 과정을 정리한다. 1️⃣ Kafka JMX Exporter 전환 중 발생한 포트 충돌 문제 상황 Prometheus에서 Kafka 메트릭을 스크랩할 때 다음과 같은 에러가 발생했다: Error scraping target: Get &amp;quot;http://kafka-jmx-exporter:9404/m...</summary> </entry> </feed>
