Data Engineering

Data Engineering/Spark

[Spark] 에러 - You can set "spark.sql.legacy.timeParserPolicy" to "LEGACY" to restore the behavior before Spark 3.0, or set to "CORRECTED" and treat it as an invalid datetime string.

에러 내용Caused by: org.apache.spark.SparkUpgradeException: [INCONSISTENT_BEHAVIOR_CROSS_VERSION.PARSE_DATETIME_BY_NEW_PARSER] You may get a different result due to the upgrading to Spark >= 3.0:Fail to parse '2024-05-26 12:11:38.478' in the new parser. You can set "spark.sql.legacy.timeParserPolicy" to "LEGACY" to restore the behavior before Spark 3.0, or set to "CORRECTED" and treat it as an inval..

Data Engineering/Airflow

[Airflow] 컴포넌트, MWAA

Airflow 컴포넌트Airflow는 복잡한 워크플로우를 스케줄링하고 관리하기 위한 오픈소스 플랫폼임.데이터 엔지니어 및 개발자들은 작업의 의존성을 명확히 정의하고, 반복적인 작업을 자동화할 수 있음.Airflow는 여러 컴포넌트로 구성되어 있으며, 각각의 역할이 있음 Airflow 각 컴포넌트 역할1. Web ServerFlask를 기반으로 한 웹 어플리케이션으로 사용자 인터페이스를 제공함.웹 서버를 통해 사용자는 작업 스케줄, 실행 상태 확인, 로그 보기 등의 작업을 수행할 수 있음. 2. Scheduler워크플로우의 스케줄링을 담당함.이 컴포넌트는 DAGs(방향성 비순환 그래프)를 주기적으로 폴링하며, 실행해야 할 새로운 작업 인스턴스를 확인하고 실행함. 3. Executor실제 작업을 실행하는 역..

Data Engineering/Spark

[Spark] Partition, Parquet 파일 크기

Spark PartitionSpark에서 파티션(Partition)은 큰 데이터 세트를 더 작은 청크로 나누는 개념임.데이터의 병렬 처리와 분산 처리 성능을 향상시키는 데 중요한 역할을 함.파티셔닝은 RDD(Resilient Distributed Dataset), DataFrame, Dataset 등 Spark의 주요 데이터 구조들에서 자동으로 관리됨. Spark Partition 기본 개념1. 파티션 정의Spark에서 데이터를 논리적으로 분할한 조각임.각 파티션은 클러스터의 다른 노드에서 독립적으로 처리될 수 있음. 2. 병렬 처리파티션은 병렬 처리의 기본 단위가 되며, 각 파티션은 클러스터 내의 다른 실행자(Executor)에 의해 동시에 처리될 수 있음. Spark Partition 관리Spark..

Data Engineering/Spark

[Spark] Spill, 직렬화 메커니즘

Apache Spark SpillApache Spark에서 spill은 메모리 용량을 초과할 때 발생하는 작업을 의미함.Spark는 큰 데이터 세트를 처리할 때 필요한 메모리를 모두 확보할 수 없는 경우, 임시적으로 디스크에 데이터를 저장함.이 과정을 spill to disk라고 하며, 이를 통해 메모리 부족 문제를 회피하고 작업의 계속을 가능하게 함. Apache Spark Spill 발생 원인Spark에서 다양한 상황에서 spill이 발생할 수 있음.1. Shuffle 작업 중여러 노드 간에 데이터를 재분배할 때, 각 노드에서 처리해야 할 데이터가 메모리에 들어갈 수 없는 경우. 2. Aggregations 및 Joins큰 키에 대한 데이터 집계나 조인을 수행할 때, 관련 데이터를 메모리에 모두 유지..

Data Engineering/Spark

[Spark] Spark Executor 란 무엇일까

스파크 익스큐터에 대한 간단한 설명 - 스파크 클러스터의 워커 노드에서 실행되는 프로세스 - 스파크 드라이버에 의해 할당된 작업을 실행하는 역할 스파크 익스큐터는 스파크 어플리케이션의 핵심 역할 - 실제로 데이터에 대한 계산을 수행 스파크 드라이버가 클러스터에 작업을 제출했을 때 - 작업은 태스크라는 작업 단위로 나눠짐 - 태스크들은 스파크 클러스터 내의 이용 가능한 익스큐터에 실행되도록 예약됨 - 익스큐터는 태스크들을 병렬로 실행하고 결과를 다시 드라이버로 반환 익스큐터가 실행될 때 - 특정 양의 메모리와 CPU 리소스가 할당 - 이 메모리를 사용하여 계산 중 빠른 액세스를 위해 데이터를 메모리에 저장 - 익스큐터는 캐시, 디스크에 저장된 데이터를 관리하며, 데이터가 노드 간에 교환되어야 하는 셔플 작..

Data Engineering/Kafka

[Kafka] 아파치 카프카란?

아파치 카프카란? 아파치 카프카는 분산 데이터 스트리밍 플랫폼으로, 대용량의 실시간 데이터 스트림을 처리하는 데 사용됩니다. 카프카는 대규모 데이터 센터에서 생성되는 대규모 데이터 스트림을 안정적으로 처리할 수 있습니다. 카프카의 구조는 브로커(broker)와 토픽(topic), 파티션(partition)으로 구성됩니다. 브로커는 카프카 클러스터 내에서 데이터를 저장하고 처리하는 역할을 합니다. 토픽은 데이터가 저장되는 논리적인 단위이며, 파티션은 토픽 내에서 데이터를 저장하는 물리적인 단위입니다. 각 파티션은 여러 대의 브로커에 걸쳐 분산되어 데이터 손실을 방지하고 성능을 향상시킵니다. 카프카의 주요 특징은 다음과 같습니다. - 스케일 아웃: 클러스터를 추가하여 선형적으로 확장이 가능합니다. - 고성능..

Data Engineering/Spark

[Spark] 스파크란 무엇인가?

아파치 스파크란? 아파치 스파크(Apache Spark)는 대규모 데이터 처리를 위한 오픈소스 분산 컴퓨팅 프레임워크입니다. 스파크는 빅데이터 처리를 위한 하둡 생태계 내에서 많이 사용되며, 분산 컴퓨팅 클러스터에서 대규모 데이터 처리를 지원합니다. 스파크는 다양한 언어로 개발이 가능하며, 스칼라, 자바, 파이썬, R 등에서 사용될 수 있습니다. 스파크는 기본적으로 데이터 처리를 위한 API인 RDD(Resilient Distributed Datasets)와 데이터 처리 및 머신러닝을 위한 라이브러리들을 제공합니다. RDD는 분산된 불변 객체 컬렉션으로, 다양한 방식으로 생성이 가능합니다. RDD는 높은 가용성과 내구성을 가지며, 분산 컴퓨팅 클러스터에서 안정적으로 처리를 수행할 수 있습니다. 스파크는 ..

Data Engineering/Kafka

[Kafka] 카프카의 장단점

아파치 카프카의 장단점 아파치 카프카는 대용량 실시간 메시징 시스템으로, 대량의 데이터를 안정적이고 빠르게 전송하고 처리하는 데 사용됩니다. 이를 위해 아파치 카프카는 분산형 아키텍처를 채택하며, 여러 대의 브로커와 프로듀서, 컨슈머로 구성됩니다. 장점: 대용량 데이터의 분산 처리: 아파치 카프카는 대량의 데이터를 처리하기 위한 분산형 아키텍처를 채택하고 있어, 대용량 데이터를 안정적으로 처리할 수 있습니다. 실시간 처리: 아파치 카프카는 실시간 처리에 최적화되어 있어, 실시간으로 대용량 데이터를 처리할 수 있습니다. 고가용성: 아파치 카프카는 다수의 브로커로 구성되어 있어, 하나의 브로커가 다운되더라도 다른 브로커가 대신 처리할 수 있어, 고가용성을 보장합니다. 확장성: 아파치 카프카는 수평적으로 확장..

Data Engineering/Airflow

[Airflow] 에어플로우 DAG란?

DAG - Directed Acyclic Graph - 순환하지 않는 그래프 - 대그라고 부른다. - 순차적으로 작업이 실행된다. - 순환 실행을 하지 않는다.

Data Engineering/Spark

[Spark] conda로 pyspark 환경 구축하기

아나콘다 가상환경 리스트 확인 conda env list python 가상환경 만들기 conda create -n py38 python==3.8 -y 가상환경 리스트 확인 conda env list 가상환경 접속 후 리스트 확인 conda activate py38 conda env list pyspark 3.3.1 설치 conda install -c conda-forge pyspark==3.3.1 -y 라이브러리 리스트 확인 pip list 간단한 pyspark 코드 실행해보기 from pyspark.sql import SparkSession from pyspark.sql.types import StructType, StructField, StringType, IntegerType spark = Spar..

박경태
'Data Engineering' 카테고리의 글 목록