Spark 6

Spark - 데이터 구조 - DataFrame

Spark의 데이터 구조RDD (Resillient Distributed Data)DataframeDatasetDataFrame의 등장DataFrame은 테이블과 유사한 행,열로 구성된 데이터 분산 컬렉션이다.(관계형 데이터 베이스 구조) RDD의 성능이슈- RDD는 메모리나 디스크에 저장 공간이 충분하지 않으면 동작하지 않는다.- RDD는 스키마(DB구조) 개념이 없다.(구조화된 데이터와  비구조화 데이터를 함께 저장하여 효율성↓)- RDD는 기본적으로 직렬화와 Garbage Collection(사용하지 않는 객체를 자동으로 메모리에서 해제)을 사용한다.이는 메모리 오버헤드를 증가시킴.- RDD는 별도의 내장된 최적화(Optimize) 엔진이 없다. 사용자가 각 RDD를 최적화 해야한다. 이러한 RDD..

Spark 2024.05.14

Spark - 데이터 구조 - RDD

Spark의 데이터 구조RDD (Resillient Distributed Data)DataframeDatasetRDD란?Resillient(회복력) : 메모리 내부에 데이터 손실이 있을 경우 파티션을 재연산해 복구함.Distributed(분산) : Spark cluster를 통하여 메모리에 분산되어 저장Data : 파일, 정보즉, 회복력 있는 분산 데이터. RDD는 위 그림과 같은 Lineage(혈통)를 가진다.RDD는 불변의 특성 Read Only을 가지는데,그렇기 때문에 특정 동작을 위해서는 기존 RDD를 변형한 새로운 RDD가 생성될 수 밖에 없다.그래서 위 그림과 같은 수 많은 RDD들이 생성되게 된다.이때 생성되는 연산 순서가 Lineage이다. 특정 동작에 의해 생성되는 RDD Lineage는..

Spark 2024.05.14

Spark 구조

1. Spark application - 실제 작업을 수행하는 역할Dirver - 한 개의 노드에서 실행, 스파크 전체의 main 함수 실행, 어플리케이션 정보의 유지 관리, 익스큐터의 실행 및 실행 분석,배포. 사용자 프로그램(JOB)을 task 단위로 Executor로 전달.Executer - 다수의 worker 노드에서 실행되는 프로세스, Driver가 할당한 task를 수행한다. 블록 매니저를 통해 cahe하는 RDD저장.1개의 Spark application에는 1개의 Driver와 N개의 Executor가 존재한다.Executor는 Cluster Manager에 의하여 해당 어플리케이션에 할당된다.** 서로 다른 스파크 어플리케이션 간의 직접적인 데이터 공유 불가 (별도의 JVM프로세스에서 동..

Spark 2024.05.14

Spark 란?

Spark란 빅데이터 처리를 위한 오픈소스 분산 처리 플랫폼이다. 하둡과의 차이점?하둡은 HDFS(분산형 파일 시스템)를 기반으로 만들어져있고, 데이터 처리시 '맵리듀스'라 불리는 대형 데이터셋 병렬 처리 방식에 의해 작동한다.HDFS는 Disk I/O를 기반으로 동작. 스파크는 인메모리상에서 동작한다.메모리 이슈만 없다면반복적인 처리, 배치성 데이터, 실시간 스트리밍 처리 등에서 속도가 훨씬 빠르다. 하둡과 스파크를 연동하여 처리하는게 가능한데,하둡의 Yarn(하둡 클러스터의 리소스(cpu,mem)를 관리하고 작업을 스케줄링하는 역할)위에스파크를 연동하여 구축하는 방법이 일반적이다. 스파크에서 사용하는 언어?일반적으로 Scala, Java, Python 사용하며 다양한 언어를 지원한다.SQL은 Spar..

Spark 2024.05.14

scala- SaveMode, StorageLevel

import org.apache.spark.sql.{SaveMode, SparkSession} import org.apache.spark.storage.StorageLevel ex) val spark_step1 = spark.sql("select yymmdd, col1, col2 from table1") spark_step1.createOrReplaceTempView("spark_step1") //쿼리 실행 결과 temp_view에 담아놓음.( spark memory에) spark_step1.persist(StorageLevel.MEMORY_ONLY_SER) // 로드된 데이터를 저장공간상에 올려두는 작업 spark_step1.write.mode(SaveMode.Append).jdbc(dburl, "ta..

Spark 2024.04.09

Spark-submit

[yarn-cluster spark-submit] [yarn-client spark-submit] 스파크는 spark-submit이라는 모든 클러스터 매니저 간에 작업을 제출해 주는 단일 툴을 제공한다. spark-submit이 옵션 없이 스크립트 이름 혹은 jar 파일 이름만으로 호출된다면 단순히 로컬로 스파크 프로그램을 실행한다. 이 프로그램을 스파크 단독 클러스터 매니저에게 제출하기 위해서는 단독 클러스터의 주소 및 실행을 원하는 익스큐터 프로세스의 크기 등 추가 정보를 제공해 주어야 한다. ex) bin/spark-submit --master spark://host:7077 --executor-memory 10g test.py --master 접속할 클러스터 매니저 --deploy-mode 드라이..

Spark 2024.04.09