본문 바로가기
728x90

spark35

[Data Enginnering] 파일 형식 .parquet vs .csv vs .avro vs .orc 내부 구조와 읽는 방식에 따른 성능차이 1. csv 주요 특징 행 기반(Row based) plain text 기반 파일 형식(바이너리가 아님) human-readable(사람이 알아 볼 수 있는 데이터) flat하고 단순한 스키마 거의 모든 애플리케이션에서 처리 가능 2. parquet 주요 특징 열 기반(Columnar) binary format 내장된 스키마 3. orc(optimized row columnar) 주요 특징 Columnar binary format 내장된 스키마 4. avro 주요 특징 row based binary format 내장된 스키마 Schema Evolution support가 매우 좋음 5. 파일 형식 비교 csv parquet orc avro 저장 방식 row based column based column .. 2023. 2. 6.
[Spark Tuning] CSV vs Parquet(columnar format) in spark 성능비교하기 [File 크기] 컬럼 수: 21개의 컬럼 레코드 수: 총 3,647,595 rows(records) csv: 578MB parquet: 44.7MB (gz.parquet: 34.6MB) [비교 관점] spark에서의 성능이란 file을 스캔할 때 스캔한 양(읽어들인 양)과 스캔시간이 중요 [CSV vs Parquet 특징 비교] (json은 덤ㅎㅎ) 1. CSV csv는 일반적인 text, 즉 row단위로 읽는 file format 1) 1개의 column select df_csv.select(F.col("Exam_No")).show(100000) Physical plan == Physical Plan == CollectLimit (3) +- * Project (2) +- Scan csv (1) (1).. 2023. 1. 25.
[Spark] 스파크의 문법적 자유도, 스키마 조작, dummy 생성 이번 포스트에서 다룰 것 스파크의 다양한 문법을 소개 스키마를 정의하여 dataframe 만들기 dummy데이터 생성 아래의 링크에서 201508_trip_data.csv 파일 다운로드 후 Spark에서 Data Read https://github.com/Spidyweb-3588/python_skillup/tree/main/201508data read&write + 파티션 조작에 관한 간단한 문제예시를 보시려면 아래의 링크를 참조해주세요. 2022.08.23 - [BigData/Spark & Spark Tuning] - [Spark] PySpark read & write + partitioning 간단한 예시문제 1. Start_Station,End_Station 컬럼을 4가지 방법으로 조회 #1. cs.. 2022. 3. 26.
[Project] ETL Daily batch project(공공데이터 코로나 API, Python, PySpark, Airflow, AWS) 4. EC2 서버 생성 및 pyspark, airflow,MySQL 설치 이번 포스트에는 EC2서버 환경을 구성하고, spark, airflow를 설치하여 이미지로 저장하겠습니다. 어떤 프로젝트인지 잘 모르시는 분은 아래의 링크를 참고해주세요. 2022.02.17 - [BigData/Project] - [Project] ETL Daily batch project(공공데이터 코로나 API, Python, PySpark, Airflow, AWS) 1. 프로젝트 개요 1. EC2서버 띄우기 1) EC2생성 및 Ubuntu Server 20.04 LTS를 선택합니다. 2) 인스턴스 타입 선택 현재 airflow 및 pyspark를 한 곳에서 돌리는 구조기 때문에, 적당한 크기의 t2.large타입을 선택합니다. 3) public ip 부여 및 IAM role 부여 public IP를.. 2022. 2. 17.
[Project] ETL Daily batch project(공공데이터 코로나 API, Python, PySpark, Airflow, AWS) 1. 프로젝트 개요 이번 포스트에는 아주 간단한 ETL을 구현하는 프로젝트를 해보겠습니다. 프로젝트 자체는 필요한 것만 최소한의 시간으로 최소한의 비용으로 구성했으며, 점차 추가기능들을 구현하거나 수정할 부분을 수정하여, sub version을 포스트 하겠습니다. 프로젝트에서 다루는 것 ETL python파일 corona API를 restAPI로 받아오는 법 --수집 python library인 bs4를 이용하여 lxml로 파싱후, list로 변환 --처리 list를 pyspark dataframe으로 변환 --처리 오늘, 전체, 날짜별 dataframe을 단일 csv파일로 저장 --저장 오늘, 전체, 날짜별 dataframe을 기준날짜를 기준으로 partition하여(partitionBy) csv파일로 저장 --저장 da.. 2022. 2. 17.
[Spark] Spark 개요, Spark란 무엇이고 어떤 역할을 하는가? Spark Core, Pandas와 비교 Spark를 공부하기에 앞서 선행 되면 좋을 법한 것들 1. 하둡과 빅데이터 개념 https://spidyweb.tistory.com/239?category=910416 [Hadoop] 하둡이란? 하둡 에코시스템이란? hadoop, hadoop eco-system 개념 1.Hadoop 이란? -하둡은 분산 데이터 처리의 공통 플랫폼입니다. -하둡을 3가지로 나눈다면 1) 데이터 저장의 분산 파일 시스템(Distributed file system) HDFS 2) 데이터 처리의 분산 데이터 처리(Distributed da. spidyweb.tistory.com 2. python 언어(+pandas library) 혹은 scala언어 스파크는 여러가지 언어를 지원하지만, scala와 python이 점유율이 높.. 2022. 1. 26.
[Spark] Spark 실행 과정 by Catalyst Optimizer, Query plan 보는 법, Spark UI 보는 법 Query Plan을 보기에 앞서 Spark 코드의 실행 과정을 알아 보겠습니다. 1. Spark 실행 계획 논리적 실행 단계(logical plan) 사용자의 코드를 논리적 실행 계획으로 변환 논리적 실행 계획 단계에서는 추상적 transformation만 표현하고, driver나 executor의 정보를 고려하지 않음 이 논리적 실행 계획으로 변환 시키는 데에는 여러 단계가 있는데, 1) unresolved logical plan(검증 전 논리적 실행 계획) 코드의 유효성과 테이블이나 컬럼의 존재 여부만을 판단하는 과정, 실행 계획은 검증되지 않은 상태 spark analyzer는 컬럼과 테이블을 검증하기 위해 Catalog, 모든 테이블의 저장소 그리고 Dataframe 정보를 활용 필요한 테이블이.. 2022. 1. 12.
[Spark] Spark tuning, job에 따른 최적의 Partition 크기, 개수 조정하기 이번 포스트에는 Partition 수 조정에 관한 spark tuning을 알아 보겠습니다. Partition 개념에 대해 잘 모르시다면 아래의 링크를 참조해주세요. https://spidyweb.tistory.com/312 [Spark Tuning] Spark의 Partition 개념, spark.sql.shuffle.partitions, coalesce() vs repartition(), partitionBy()와의 차이 이번 포스트에는 Spark의 Partition 개념, 종류 및 조작관련 팁, 헷갈릴 만한 개념에 대해 포스트 해보겠습니다. Partition이란? Partition은 RDDs나 Dataset를 구성하고 있는 최소 단위 객체입니다. 각 Partition spidyweb.tistory... 2022. 1. 11.
[Spark] RDD action & transformation + Dataframe의 연산(operation) 분류 Spark는 분산 환경에서 데이터를 다루는 데 필요한 지연 처리방식의 transformation과 즉시 실행 방식의 action을 제공 그리고 DataFrame과 Dataset의 transformation, action과 동일한 방식으로 동작한다. 1. RDD transformation Spark Transformation 는 기존의 RDD에서 새로운 RDD를 생성하는 function이다. Lazy 처리방식이라서 action을 호출할 때 transformation이 실제로 실행된다. -> transformation을 수행할 때 query plan만 만들고 실제로 메모리에 올리지는 않는다. action이 호출될 때 transformation을 메모리에 올려서 수행하고 action을 수행시킨다. transf.. 2021. 12. 29.
728x90