RDD(5)
-
[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 -
[Spark] Transformations & Actions 함수
Spark Operation = Transformations + Actions Tranformations는 결괏값으로 새로운 RDD를 반환하고, Lazy Execution을 한다는 점이 특징이다. Actions는 결괏값을 연산하여 출력하거나 저장하며, Eager Execution을 한다는 점이 특징이다. Transformations와 Actions 함수들을 더 자세히 살펴보자. 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 faulth..
2022.05.01 -
[Spark] Key-Value RDD 개념 및 코드
Key-Value RDD (Key, Value) 쌍을 가지는 RDD로, Paris RDD라고 불리기도 한다. Single Value RDD와 Key-Value RDD는 활용 양상이 조금 다른데, 다음과 같다. Single Value RDD 예) 특정 단어 수 세기 Key-Value RDD 예) 특정 드라마가 받은 별점의 평균 RDD가 무엇인지 모르겠다면? https://mengu.tistory.com/27?category=932924 [Spark] RDD 개념 및 코드 RDD(Resilient Distributed Dataset)란? 직역하면 탄력적인 분산 데이터셋이다. 말 그대로 데이터를 클러스터에 분산하여 저장하며, 그런 데이터를 탄력적으로 이용(이슈 발생 시 과거 데이터로 돌아가기 mengu.tis..
2022.05.01 -
[Spark] 분산/병렬 처리할 때 주의할 점
앞 포스팅에서 언급했듯이, Spark는 분산/병렬 처리를 지원한다. 하지만 분산/병렬 처리가 된다고 마냥 믿고 쓰기만 해서는 안된다. 분산/병렬 처리의 성능을 올리고, 비용을 줄이기 위해선 생각해줘야 할 것들이 몇몇 있다. 지금부터 그 요소들을 살펴보고 어떻게 코딩해야 할지 방향을 짚어보자. Distributed Data-Parallel 먼저 Spark의 핵심인 'Distributed Data-Parallel'에 대해서 알아보자. 분산된 환경에서의 병렬 처리란? 1) 데이터를 여러 개로 나누어 여러 노드로 보낸다. 2) 각 노드에서 독립적으로 task를 시행. 3) 각자 만든 결괏값을 합친다. 이 일련의 과정이 분산된 환경에서의 병렬 처리이며, 그림으로 표현하면 다음과 같다. Spark를 처음 접한다면,..
2022.05.01 -
[Spark] RDD 개념 및 코드
RDD(Resilient Distributed Dataset)란? 직역하면 탄력적인 분산 데이터셋이다. 말 그대로 데이터를 클러스터에 분산하여 저장하며, 그런 데이터를 탄력적으로 이용(이슈 발생 시 과거 데이터로 돌아가기 등)할 수 있게 하는 데이터셋이다. 지금부터 RDD의 특징을 톺아보자. 1. 데이터의 분산 RDD는 다음과 같이 데이터를 여러 클러스터에 분산 저장하는 방식이다. 하지만 여러 클러스터에 흩어져있어도 하나의 파일처럼 사용하는 것이 가능하다. # 패키지를 가져오고 from pyspark import SparkConf, SparkContext import pandas as pd # Spark 설정 conf = SparkConf().setMaster("local").setAppName("ube..
2022.04.24