본문 바로가기
728x90

dataframe9

[Spark] 프로그래밍 언어 별 Spark 성능, 속도 차이 (UDF와 직렬화) Spark에서는 지원할 수 있는 언어가 5(7)가지가 있습니다.ScalaPythonJavaRSQLGO (4.x version 부터 지원)Rush(4.x version 부터 지원)관련하여 속도 차이는 어떤지 비교하고 왜 속도 차이가 나는지 정리해보겠습니다.1. Catalyst Optimizer와 Tungsten 엔진 사용Spark는 Catalyst Optimizer라는 내부 최적화 엔진을 사용하여, DataFrame, Dataset, 그리고 Spark SQL 쿼리를 모두 동일한 논리적 실행 계획(Logical Plan)으로 변환 Catalyst Optimizer는 쿼리 최적화, 필터 푸시다운, 프로젝트 제거, 조인 최적화 등을 수행최적화된 논리적 계획은물리적 실행 계획(Physical Plan)으로 변환되.. 2025. 1. 10.
[Spark] Spark Streaming 개념, DStream API, Structured Streaming Stream 처리란스트림 처리는 신규 데이터를 끊임없이 처리해 결과를 만들어내는 행위입력 데이터는 무한하며 시작과 끝을 사전에 정의하지 않음스트림 처리 시스템에 도착한 일련의 이벤트(신용카드 전표 정보, 웹사이트 클릭(행동 로그), IoT 장비 센서 데이터)1) 스트림 처리 사례통보와 알림notification과 alerting은 가장 흔한 스트림 처리 사례연속적인 이벤트에서 특정 이벤트나 이벤트의 패턴을 탐지했을 때 발생실시간 리포트기업에서 직원을 위한 실시간 대시보드를 만들 때에 사용플랫폼 전체 사용량, 시스템 부하, 실행 시간, 신규 기능의 사용량증분형 ETL웨어하우스에서 정보를 얻는 시간을 줄이기 위해 사용신규 데이터(증분 데이터)에 대해서 바로바로 반영할 수 있음데이터 중복 저장이나 유실 방지를.. 2024. 12. 30.
[Spark] cache() vs persist() 차이점 정리 (feat. storage level) cache() test_df.cache() # test_df를 캐싱 test_df.storageLevel # org.apache.spark.storage.StorageLevel = StorageLevel(disk, memory, deserialized, 1 replicas) persist() import org.apache.spark.storage.StorageLevel # storage 명시를 위한 library import test2_df.persist(StorageLevel.MEMORY_AND_DISK) # test2_df에 persist를 하면서 storage lvl을 명시 test2_df.storageLevel # org.apache.spark.storage.StorageLevel = Stora.. 2023. 9. 19.
[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.
[Spark] Spark 실행 과정 by Catalyst Optimizer, Query plan 보는 법, Spark UI 보는 법 Query Plan을 보기에 앞서 Catalyst Optimzer에 대해 알아보고 Spark 코드의 실행 과정을 알아 보겠습니다. Catalyst Optimzer란?Spark SQL에서 쿼리 성능을 최적화하는 핵심 컴포넌트트리 기반의 강력한 쿼리 최적화 프레임워크로, 분석 및 실행 계획을 자동으로 최적화하여 Spark SQL, DataFrame, Dataset API의 성능을 극대화카탈리스트를 구성하는 주요 데이터 타입은 node object로 구성된 treeNode 타입의 속성TreeNode 클래스를 상속 받음0개 이상의 자식을 가질 수 있음immutabletansformation 함수를 통해 만들어짐 Rules새로운 Tree는 Tree를 다른 Tree로 변경(transformation)하는 Rule을.. 2022. 1. 12.
[Spark] RDD action & transformation + Dataframe의 연산(operation) 분류 Spark는 분산 환경에서 데이터를 다루는 데 필요한 지연 처리방식(lazy evaluation)의 transformation과 즉시 실행 방식의 action을 제공그리고 DataFrame과 Dataset의 transformation, action과 동일한 방식으로 동작한다.1. RDD transformationSpark Transformation는 기존의 RDD에서 새로운 RDD를 생성하는 functionLazy 처리방식(lazy evaluation)이라서 action을 호출할 때 transformation이 실제로 실행 → transformation을 수행할 때 query plan만 만들고 실제로 메모리에 올리지는 않는다. action이 호출될 때 transformation을 메모리에 올려서 수행하고.. 2021. 12. 29.
[Spark] RDD vs DataFrame 큰 차이점, Dataframe을 사용해야 되는 이유, RDD를 사용해야 하는 경우는? RDD, Dataframe 다루기 RDD란? 정의 및 특징, dataframe과의 차이는?RDD(Resilient Distributed Dataset)특징설명ResilientRDD lineage 그래프를 통한 fault-tolerant가 빠졌거나,node의 실패로 인한 손상된 파티션을 다시 실행시킨다.Distributed클러스터의 여러 노드에 데이터가 분산되어 저장Dataset원천 데이터값 혹은 값의 값들로 이루어진 파티션된 collection 데이터(튜플 혹은 다른 레코드로써 사용될 수 있는 데이터 객체들)RDD 특징특징설명In-MemoryRDD속의 데이터는 가능한 많이, 오래 메모리에 저장되어 있다.불가변성(읽기 전용)한번 생성되고 나면 변하지 않는다. transformation 연산을 통해 새로운 RDD로써 만들 수 있다.lazy .. 2021. 12. 16.
[BigData] Spark 예제, Dataframe 특징, 설정 값, SQL 파일 읽어오기 csv, json, parquet 등등 df = spark.read.format("json").option("header","true").load("주소") //option("header","true")는 해당 열의 이름을 표기 df = spark.read.format("csv").option("inferSchema","true").load("주소") df = spark.read.format("parquet").load("주소") option 종류 sep: 구분자 default: , Spark 1.6 방식에서는 delimiter를 사용해야 한다 encoding default: UTF-8 quote: value가 큰 따옴표로 묶인 경우 "를 지정 defualt: " escape: 구분자가 v.. 2021. 2. 17.
[BigData] Spark( RDD vs DataFrame vs Dataset) + SparkSQL 출처 : A comparison between RDD, DataFrame and Dataset in Spark from a developer’s point of viewRDDResilient: 분산되어 있는 데이터에 에러가 생겨도 복구할 수 있는 능력Distributed: 클러스터의 여러 노드에 데이터를 분산해서 저장Dataset: 분산된 데이터의 모음SparkContext를 통해 만들어지며 보통 sc=spark.SparkContext를 통해 객체를 생성한다SparkSession을 import해도 SparkContext가 포함되어 있는 내용이라 SparkSession만 import해도 사용가능하긴 하다.ex)spark = SparkSession.builder.appName("이름").master("loc.. 2021. 2. 15.
728x90