Chapter 1. Apache Airflow 살펴보기1.1 데이터 파이프라인Task 간의 의존성을 확인하는 방법 중 하나가 pipeline 을 Graph 자료구조로 그리는 것.DAG (Directed Acyclic Graph) : 방향성 비순환 그래프. 반복 및 순환 (cycle)을 허용하지 않음.1.1.2 파이프라인 그래프 실행DAG 구성을 이용하여 정해진 순서로 Task 를 실행함.1.1.3 그래프 파이프라인과 절차적 스크립트 파이프라인 비교각 Task 를 Node 로 생성하고, Task 간의 데이터 의존성을 화살표 끝점으로 연결하여 표현함.1.1.2 예시와 다른 점은 파이프라인 첫번째 단계가 독립적인 두개의 태스크로 구성되어 있으며, 병렬로 실행할 수 있다는 점이다.Task를 순차적으로 실행하는 ..
Data Engineering

'스파크 완벽 가이드' 책에서는 스파크 성능 향상의 기법을 크게 간접적/ 직접적인 기법으로 나누어 설명하고 있다. 또한 사용자가 제어 가능한 범위 내에서 튜닝 기법들을 소개하고 있다. 19장의 내용 중 핵심 내용을 요약과 중요한 부분을 더 정리 해보았다. 1. 간접적인 스파크 성능 향상 기법 1.1 설계 방안scala vs java vs python vs R 구조적 API 로 해결이 되지 않아, RDD 트랜스포매이션이나 UDF 를 사용해야 하는 경우 R , Python 의 사용은 피하는 것이 좋다. Python 에서 RDD 코드를 실행하게 되면, Python Process 를 오가는 데이터들을 직렬화 하면서 비용이 크게 발생하고, 안정성이 떨어지게 된다. Spark 에서 직렬화란 : 객체를 바이트 스트림..

kakfa의 등장 배경실시간으로 데이터를 처리하는 과정에서, 다수의 producer 와 consumer가 개별적인 연결을 맺는 구조의 경우 하나의 시스템만 추가되어도 통신 구조가 복잡해진다. 이런 문제를 해결하기 위해서 카프카를 통해, 메세지와 데이터의 흐름을 중앙화하여 관리한다. Kafka 의 구성요소 producer : 정보를 제공하는 processconsumer: 정보를 제공받아서 사용하려는 processconsumer group : 카프카 컨슈머들은 컨슈머 그룹에 속한다. 여러개의 컨슈머가 같은 컨슈머 그룹에 속할 때 각 컨슈머가 해당 토픽의 다른 파티션을 분담해서 메세지를 읽을 수 있다.broker : 데이터를 저장하고 수신 및 전달하는 node (그림은 MQ == Broker 같이 보이는데..
조건에 맞는 아이템들의 가격의 총합 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/273709 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr SELECT SUM(PRICE) AS TOTAL_PRICEFROM ITEM_INFO WHERE RARITY = 'LEGEND' 물고기 종류 별 대어 찾기https://school.programmers.co.kr/learn/courses/30/lessons/293261 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤..

기본이 되는 hadoop cluster docker-compose.yml 은 아래의 repository 를 참고하였으며, presto 엔진을 사용하기 위해 수정하였다. https://github.com/big-data-europe/docker-hadoop GitHub - big-data-europe/docker-hadoop: Apache Hadoop docker imageApache Hadoop docker image. Contribute to big-data-europe/docker-hadoop development by creating an account on GitHub.github.com docker-compose.yml 파일은 다음과 같다. version: "3"services: nameno..

chrome headless 모드에서 크롤링을 하던 중 아래와 같은 문제가 발생하였다. {logging_mixin.py:188} WARNING - /home/ubuntu/airflow_venv/lib/python3.12/site-packages/airflow/task/task_runner/standard_task_runner.py:61 DeprecationWarning: This process (pid=7115) is multi-threaded,use of fork() may lead to deadlocks in the child. grep 명령어를 사용하여 fork 가 어디에서 사용되는지 해당 파일에서 확인해 보았다. fork() 함수가 _start_by_fork() 라는 함수 내부에서 사용되고 있다...
프로그래머스 유형별 문제 도장깨기 챌린지 ! 1. 조건에 맞는 도서 리스트 출력하기 https://school.programmers.co.kr/learn/courses/30/lessons/144853 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr-- 조건에 부합하는 도서 리스트 출력하기 SELECT BOOK_ID , DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATEFROM BOOK WHERE 1=1AND PUBLISHED_DATE >= '2021-01-01' AND PUBLISHED_DATE 2. 조건에..
1. Airflow 의 주요 컴포넌트 Scheduler : workflow 스케줄을 실행시키고 executor 에게 task 를 제출하여 실행시킨다. Executor : task 실행을 관리하는 컴포넌트 Worker : 실제로 task 를 실행시키는 컴포넌트Webserver : DAG의 실행을 UI상에서 확인할 수 있도록 웹 서버를 제공한다. Metadata Database : DAGs 에 대한 정보와 task 의 상태에 대한 정보를 저장한다. Dags (folder) : DAG를 구성하는 코드가 있는 경로이다. airflow.cfg 파일에서 기본 경로를 설정할 수 있다. 2. Airflow Executor 의 종류 Sequential Executor기본 executor 이다.한번에 하나의 task 만..