pyspark(16)
-
[SparkSQL] Catalyst, Tungsten 작동 원리
Spark Backend : Catalyst, Tungsten Spark는 쿼리를 돌리기 위해 위의 두 가지 엔진을 사용한다. Catalyst는 쿼리문을 최적화 시키는데 이용하고, Tungsten은 RDD level에서 용량을 최적화시킨다. Process를 보면 다음과 같다. Spark의 조직도는 다음과 같다. 조직도를 보면 알 수 있다시피 Catalyst는 SQL, DataFrame이 Structured Data를 다룰 수 있게 하는 필수 모듈이다. 그렇다면 Catalyst가 구체적으로 어떤 기능을 하는지 살펴보자. "본 포스팅은 패스트캠퍼스의 강의를 듣고, 정리한 자료임을 밝힙니다." Catalyst의 기능 Logical Plan -> Physical Plan Logical Plan이란? 수행하는 모..
2022.05.09 -
[SparkSQL] UDF 개념 및 코드
UDF User Define Function. 즉, 사용자 지정 함수를 말한다. 앞선 포스팅에서 데이터 프레임을 처리하는 여러 함수들을 보았다. SparkSQL에선 사용자가 직접 어떤 작업을 수행하는 함수를 명명하고, Spark에 등록하여 쓸 수 있다. 자세하게 알아보자. "본 포스팅은 패스트캠퍼스의 강의를 듣고, 정리한 자료임을 밝힙니다." Basic Setting import os import findspark findspark.init(os.environ.get("SPARK_HOME")) import pyspark from pyspark import SparkConf, SparkContext import pandas as pd import faulthandler faulthandler.enable(..
2022.05.08 -
[SparkSQL] DataFrame 다루기
DataFrame SparkSQL에서 다루는 Structured Data로 아주 주요 개념이다. 기본적으로 Lazy Execution, 분산, Immutable이란 RDD의 장점을 가짐과 동시에 구조화(Structured)되어 있어 자동 최적화까지 가능하다. CSV, JSON, Hive 등으로 읽거나 변환도 가능하다. 본격적으로 DataFrame을 다뤄보자. "본 포스팅은 패스트캠퍼스의 강의를 듣고, 정리한 자료임을 밝힙니다." Basic Setting import os import findspark findspark.init(os.environ.get("SPARK_HOME")) import pyspark from pyspark import SparkConf, SparkContext import pand..
2022.05.07 -
[Spark] SparkSQL 개념 및 코드
SparkSQL Structured Data를 다루기 위해 Spark에서도 SQL문을 쓸 수 있게 했다. 1. Structured Data와 Unstructured Data의 차이점은 무엇이고 2. 왜 RDD가 아닌 Structured Data를 써야 하며 3. Spark에서 SQL문을 어떻게 쓸 수 있을까? 포스팅을 읽어가며 질문을 해소해보자. "본 포스팅은 패스트캠퍼스의 강의를 듣고, 정리한 자료임을 밝힙니다." Structured Data vs Unstructured Data Unstructured Data : free form - 로그 파일 - 이미지 말 그대로 free form. 자유로운 형식의 데이터다. 이미지가 될 수도 있고, 하나의 스트링이 될 수 있다. 이런 데이터들을 정제하여 Struc..
2022.05.06 -
[Spark] Reduction 개념 및 코드
Reduction 요소들을 모아서 하나로 합치는 작업을 말한다. 많은 Spark 연산들이 Reduction이라고 봐도 무방하다. * 파일 저장, collect() 등과 같이 Reduction이 아닌 액션도 존재. 코드로 실습해보자. conf 설정 import os import findspark findspark.init(os.environ.get('SPARK_HOME')) import pyspark from pyspark import SparkConf, SparkContext import pandas as pd import faulthandler faulthandler.enable() conf = SparkConf().setMaster('local').setAppName('my-RDD-transforma..
2022.05.01 -
[Spark] Spark 속도 최적화, Cashe() & Persist()
Spark 속도를 최적화시키는 방법으론, Cashe(), Persist()가 있다. Spark 특성상, Transformations는 Lazy Execution 방식으로 작업을 수행한다. 그 이유는, Eager Execution(즉시 시행)을 따를 경우 다음과 같은 비효율이 발생한다. Task를 수행할 때마다 Disk에 저장을 하고, 다시 이를 불러들여야 한다. 이 과정에서 Disk 공간은 물론, 통신으로 인한 속도 저하 등 비효율이 발생하게 된다. 그렇다면 Lazy Execution 방식으로 작업을 수행한다면 어떨까? Lazy Execution 방식이라면, Disk에 저장하지 않는다. 대신 Task에서 Task로 전달될 때 In-Memory 방식으로 데이터를 주고받을 수 있다. In-Memory 방식으..
2022.05.01