SlideShare a Scribd company logo
1 of 15
Download to read offline
Learning Spark
chapter3. RDD로 프로그래밍하기
overview
- RDD의 기초
- RDD생성하기
- RDD의 연산
- 트랜스포메이션
- 액션
- 여유로운 수행 방식(Lazy evaluation)
- 스파크에 함수 전달하기
- 주로 쓰는 트랜스포메이션과 액션
- 가상 집합 연산
- 액션
- 영속화(캐싱)
RDD(Resilient Distributed DataSet)
분산되어 존재하는 데이터 요소들의 모임
- 새로운 RDD를 만들거나
- 존재하는 RDD를 변형하거나
- 결과 계산을위해 RDD에서 연산을 호출
스파크는 자동으로 RDD에 있는 데이터들을 클러스터에 분배, 수행하는 연산들을
병렬화
RDD 기초
- RDD는 분산되어 존재있는 변경 불가능한 객체 모음
- RDD는 사용자 정의 클래스를 포함해
파이썬, 자바, 스칼라의 어떤 타입의 객체든 가질 수 있다.
- 두 가지 타입의 연산을 지원
- 트랜스포메이션(transformation)
- 액션(action)
- 스파크는 RDD를 lazy evaluation으로 액션을 사용하는 시점에 처리
RDD 생성하기
두 가지 방법을 제공
- 외부 데이터를 로드
val lines = sc.textFile("README.md")
- 직접 만든 프로그램에서 데이터 집합을 병렬화
val lines2 = sc.parallelize(List("pandas", "i like pandas"))
RDD의 연산
두 가지 타입의 연산을 지원
- 트랜스포메이션(transformation)
- 새로운 RDD를 만들어내는 연산(ex. map(), filter())
- 액션(action)
- 프로그램에 결과를 돌려주거나 스토리지에 결과를 써 넣는 연산(ex. count(), first())
트랜스포메이션
- 새로운 RDD를 만들어 돌려주는 연산
- 실제로 액션이 사용되는 시점에 계산됨
- RDD는 변경 불가능한 것
<console>:25: error: reassignment to val
- 트랜스포메이션 연산이 일어난 후, 새로운 RDD에 대한 레퍼런스를 리턴
- 가계도(lineage graph)
- 필요시 각 RDD를 재연산하거나 저장된 RDD를 유실될 경우 복구 하기 위함
액션
- 프로그램에 최종 결과 값을 돌려주거나,
외부 저장소에 값을 기록하는 연산 작업
- 실제로 트랜스포메이션이 계산을 수행하도록 만든다.
- 새로운 액션을 호출할 때마다 전체 RDD가 처음부터 계산됨
여유로운 수행 방식
- 스파크가 액션을 만나기 전까지 트렌스포메이션을 처리하지 않음
- 함수형 언어에서는 친숙한 방식
- RDD는 데이터를 가지고 있지 않다.
메타데이터에 명령어만 기록 후, 액션을 만날 때 실제로 수행
스파크에 함수 전달하기
트랜스포메이션과 액션 일부는 함수를 전달해야하는 구조
word = rdd.filter(lambda s: “error” in s)
def containsError(s):
return “error” in s
word = rdd.filter(containsError)
주로쓰는 트랜스포메이션
트랜스포메이션
- map()
- 함수를 받아 RDD의 각 데이터에 적용하고 결과를 돌려준다.
- filter()
- 함수를 받아 filter()함수를 통과한 데이터만 담아 결과를 돌려준다.
- flatMap()
주로쓰는 트랜스포메이션
가상 집합 연산
- distinct()
- union()
- intersection()
- subtract()
- cartesian()
주로쓰는 액션
- reduce()
- 두 개의 데이터를 합쳐 같은 타입 데이터 하나를 반환 하는 함수를 받는다.
val sum = rdd.reduce((x,y) => x+y)
- take()
- count()
- countByValue()
- collect()
- foreach()
RDD 타입 값 변환하기
- 몇몇의 함수들은 특정한 타입의 RDD에서만 사용가능
(mean(), variance(), key/value페어)
- 함수를 사용하기 전에 해당 타입이 지원하는지 여부 확인
영속화(캐싱)
- RDD는 호출하는 액션들에 대한 모든 의존성을 재연산.
- 이를 방지하기 위해서 영속화(persist) 요청할 수 있다.
- LRU(Least Recently Used)를 사용해 관리.
import org.apache.spark.storage.StorageLevel
var result = input.map(x => x*x)
result.persist(StorageLevel.DISK_ONLY)
println(result.count())
println(result.collect().mkString(","))

More Related Content

What's hot

4.1 단일호스트의 부하
4.1 단일호스트의 부하4.1 단일호스트의 부하
4.1 단일호스트의 부하Mungyu Choi
 
Apache spark 소개 및 실습
Apache spark 소개 및 실습Apache spark 소개 및 실습
Apache spark 소개 및 실습동현 강
 
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제NAVER D2
 
Spark은 왜 이렇게 유명해지고 있을까?
Spark은 왜 이렇게  유명해지고 있을까?Spark은 왜 이렇게  유명해지고 있을까?
Spark은 왜 이렇게 유명해지고 있을까?KSLUG
 
Spark 소개 2부
Spark 소개 2부Spark 소개 2부
Spark 소개 2부Jinho Yoo
 
2.apache spark 실습
2.apache spark 실습2.apache spark 실습
2.apache spark 실습동현 강
 
Zeppelin notebook 만들기
Zeppelin notebook 만들기Zeppelin notebook 만들기
Zeppelin notebook 만들기Soo-Kyung Choi
 
PySpark 배우기 Ch 06. ML 패키지 소개하기
PySpark 배우기 Ch 06. ML 패키지 소개하기PySpark 배우기 Ch 06. ML 패키지 소개하기
PySpark 배우기 Ch 06. ML 패키지 소개하기찬희 이
 
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Yongho Ha
 
왜 Spark 와 infinispan 왜 같이 쓰지
왜 Spark 와 infinispan 왜 같이 쓰지 왜 Spark 와 infinispan 왜 같이 쓰지
왜 Spark 와 infinispan 왜 같이 쓰지 Un Gi Jung
 
Spark 소개 1부
Spark 소개 1부Spark 소개 1부
Spark 소개 1부Jinho Yoo
 
Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106
Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106
Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106SangHoon Lee
 
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지위키북스
 
하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다민철 정민철
 
Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리Jeong-gyu Kim
 
7가지 동시성 모델 람다아키텍처
7가지 동시성 모델  람다아키텍처7가지 동시성 모델  람다아키텍처
7가지 동시성 모델 람다아키텍처Sunggon Song
 
엘라스틱 서치 세미나
엘라스틱 서치 세미나엘라스틱 서치 세미나
엘라스틱 서치 세미나종현 김
 
Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문SeungHyun Eom
 

What's hot (20)

4.1 단일호스트의 부하
4.1 단일호스트의 부하4.1 단일호스트의 부하
4.1 단일호스트의 부하
 
Apache spark 소개 및 실습
Apache spark 소개 및 실습Apache spark 소개 및 실습
Apache spark 소개 및 실습
 
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
 
Spark은 왜 이렇게 유명해지고 있을까?
Spark은 왜 이렇게  유명해지고 있을까?Spark은 왜 이렇게  유명해지고 있을까?
Spark은 왜 이렇게 유명해지고 있을까?
 
(Apacje Spark)아파치 스파크 개요, 소개, 스파크란?
(Apacje Spark)아파치 스파크 개요, 소개, 스파크란?(Apacje Spark)아파치 스파크 개요, 소개, 스파크란?
(Apacje Spark)아파치 스파크 개요, 소개, 스파크란?
 
Spark 소개 2부
Spark 소개 2부Spark 소개 2부
Spark 소개 2부
 
2.apache spark 실습
2.apache spark 실습2.apache spark 실습
2.apache spark 실습
 
Zeppelin notebook 만들기
Zeppelin notebook 만들기Zeppelin notebook 만들기
Zeppelin notebook 만들기
 
PySpark 배우기 Ch 06. ML 패키지 소개하기
PySpark 배우기 Ch 06. ML 패키지 소개하기PySpark 배우기 Ch 06. ML 패키지 소개하기
PySpark 배우기 Ch 06. ML 패키지 소개하기
 
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
 
Spark sql
Spark sqlSpark sql
Spark sql
 
왜 Spark 와 infinispan 왜 같이 쓰지
왜 Spark 와 infinispan 왜 같이 쓰지 왜 Spark 와 infinispan 왜 같이 쓰지
왜 Spark 와 infinispan 왜 같이 쓰지
 
Spark 소개 1부
Spark 소개 1부Spark 소개 1부
Spark 소개 1부
 
Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106
Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106
Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106
 
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
 
하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다
 
Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리
 
7가지 동시성 모델 람다아키텍처
7가지 동시성 모델  람다아키텍처7가지 동시성 모델  람다아키텍처
7가지 동시성 모델 람다아키텍처
 
엘라스틱 서치 세미나
엘라스틱 서치 세미나엘라스틱 서치 세미나
엘라스틱 서치 세미나
 
Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문
 

Similar to Chapter3 - learning spark

Windows via c++ chapter6
Windows via c++   chapter6Windows via c++   chapter6
Windows via c++ chapter6Shin heemin
 
Mean 스택을 사용한 IoT 개발
Mean 스택을 사용한 IoT 개발Mean 스택을 사용한 IoT 개발
Mean 스택을 사용한 IoT 개발Jay Park
 
Windws via c/c++ chapter 6
Windws via c/c++ chapter 6Windws via c/c++ chapter 6
Windws via c/c++ chapter 6SukYun Yoon
 
Hadoop 제주대
Hadoop 제주대Hadoop 제주대
Hadoop 제주대DaeHeon Oh
 
Flamingo (FEA) Spark Designer
Flamingo (FEA) Spark DesignerFlamingo (FEA) Spark Designer
Flamingo (FEA) Spark DesignerBYOUNG GON KIM
 
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...OpenStack Korea Community
 
Cloudera Impala 1.0
Cloudera Impala 1.0Cloudera Impala 1.0
Cloudera Impala 1.0Minwoo Kim
 
Cloudera session seoul - Spark bootcamp
Cloudera session seoul - Spark bootcampCloudera session seoul - Spark bootcamp
Cloudera session seoul - Spark bootcampSang-bae Lim
 
The nosql echossytem
The nosql echossytemThe nosql echossytem
The nosql echossytem종석 박
 
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30Donghan Kim
 
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30Donghan Kim
 
No sql 이해 및 활용 공개용
No sql 이해 및 활용 공개용No sql 이해 및 활용 공개용
No sql 이해 및 활용 공개용YOUNGGYU CHUN
 
Tips and experience_of_dx12_engine_development._ver_1.2
Tips and experience_of_dx12_engine_development._ver_1.2Tips and experience_of_dx12_engine_development._ver_1.2
Tips and experience_of_dx12_engine_development._ver_1.2YEONG-CHEON YOU
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Pcap 세미나
Pcap 세미나Pcap 세미나
Pcap 세미나chyoon
 
Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .YEONG-CHEON YOU
 
Introduction to DirectX 12 Programming , Ver 1.5
Introduction to DirectX 12 Programming , Ver 1.5Introduction to DirectX 12 Programming , Ver 1.5
Introduction to DirectX 12 Programming , Ver 1.5YEONG-CHEON YOU
 

Similar to Chapter3 - learning spark (20)

Apache Spark
Apache SparkApache Spark
Apache Spark
 
Windows via c++ chapter6
Windows via c++   chapter6Windows via c++   chapter6
Windows via c++ chapter6
 
Start spark
Start sparkStart spark
Start spark
 
Mean 스택을 사용한 IoT 개발
Mean 스택을 사용한 IoT 개발Mean 스택을 사용한 IoT 개발
Mean 스택을 사용한 IoT 개발
 
Windws via c/c++ chapter 6
Windws via c/c++ chapter 6Windws via c/c++ chapter 6
Windws via c/c++ chapter 6
 
Hadoop 제주대
Hadoop 제주대Hadoop 제주대
Hadoop 제주대
 
Flamingo (FEA) Spark Designer
Flamingo (FEA) Spark DesignerFlamingo (FEA) Spark Designer
Flamingo (FEA) Spark Designer
 
What is spark
What is sparkWhat is spark
What is spark
 
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
[OpenInfra Days Korea 2018] Day 2 - CEPH 운영자를 위한 Object Storage Performance T...
 
Cloudera Impala 1.0
Cloudera Impala 1.0Cloudera Impala 1.0
Cloudera Impala 1.0
 
Cloudera session seoul - Spark bootcamp
Cloudera session seoul - Spark bootcampCloudera session seoul - Spark bootcamp
Cloudera session seoul - Spark bootcamp
 
The nosql echossytem
The nosql echossytemThe nosql echossytem
The nosql echossytem
 
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
 
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
 
No sql 이해 및 활용 공개용
No sql 이해 및 활용 공개용No sql 이해 및 활용 공개용
No sql 이해 및 활용 공개용
 
Tips and experience_of_dx12_engine_development._ver_1.2
Tips and experience_of_dx12_engine_development._ver_1.2Tips and experience_of_dx12_engine_development._ver_1.2
Tips and experience_of_dx12_engine_development._ver_1.2
 
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(IT실무교육/국비지원교육/자바/스프링교육추천)#15.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
 
Pcap 세미나
Pcap 세미나Pcap 세미나
Pcap 세미나
 
Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .
 
Introduction to DirectX 12 Programming , Ver 1.5
Introduction to DirectX 12 Programming , Ver 1.5Introduction to DirectX 12 Programming , Ver 1.5
Introduction to DirectX 12 Programming , Ver 1.5
 

More from Mungyu Choi

HTTP 완벽가이드 - ch15. 엔터티, 인코딩 (Entities and Encoding)
HTTP 완벽가이드 - ch15. 엔터티, 인코딩 (Entities and Encoding)HTTP 완벽가이드 - ch15. 엔터티, 인코딩 (Entities and Encoding)
HTTP 완벽가이드 - ch15. 엔터티, 인코딩 (Entities and Encoding)Mungyu Choi
 
HTTP 완벽가이드 - ch5. web server
HTTP 완벽가이드 - ch5. web serverHTTP 완벽가이드 - ch5. web server
HTTP 완벽가이드 - ch5. web serverMungyu Choi
 
Elasticsearch server Chapter5
Elasticsearch server Chapter5Elasticsearch server Chapter5
Elasticsearch server Chapter5Mungyu Choi
 
JVM과 톰캣 튜닝
JVM과 톰캣 튜닝JVM과 톰캣 튜닝
JVM과 톰캣 튜닝Mungyu Choi
 
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝Mungyu Choi
 
Nodejs 트래픽 라우팅, 파일 서비스, 미들웨어
Nodejs 트래픽 라우팅, 파일 서비스, 미들웨어Nodejs 트래픽 라우팅, 파일 서비스, 미들웨어
Nodejs 트래픽 라우팅, 파일 서비스, 미들웨어Mungyu Choi
 
nodejs websocket & SOCKET.IO
nodejs websocket & SOCKET.IOnodejs websocket & SOCKET.IO
nodejs websocket & SOCKET.IOMungyu Choi
 
정렬(버블정렬,선택정렬,삽입정렬)
정렬(버블정렬,선택정렬,삽입정렬)정렬(버블정렬,선택정렬,삽입정렬)
정렬(버블정렬,선택정렬,삽입정렬)Mungyu Choi
 
c++ API디자인 ch9. 발표자료
c++ API디자인 ch9. 발표자료c++ API디자인 ch9. 발표자료
c++ API디자인 ch9. 발표자료Mungyu Choi
 
Ch11. server infra
Ch11. server infraCh11. server infra
Ch11. server infraMungyu Choi
 
대규모 서비스를 지탱하는 기술 ch6
대규모 서비스를 지탱하는 기술 ch6대규모 서비스를 지탱하는 기술 ch6
대규모 서비스를 지탱하는 기술 ch6Mungyu Choi
 

More from Mungyu Choi (16)

HTTP 완벽가이드 - ch15. 엔터티, 인코딩 (Entities and Encoding)
HTTP 완벽가이드 - ch15. 엔터티, 인코딩 (Entities and Encoding)HTTP 완벽가이드 - ch15. 엔터티, 인코딩 (Entities and Encoding)
HTTP 완벽가이드 - ch15. 엔터티, 인코딩 (Entities and Encoding)
 
HTTP 완벽가이드 - ch5. web server
HTTP 완벽가이드 - ch5. web serverHTTP 완벽가이드 - ch5. web server
HTTP 완벽가이드 - ch5. web server
 
Elasticsearch server Chapter5
Elasticsearch server Chapter5Elasticsearch server Chapter5
Elasticsearch server Chapter5
 
JVM과 톰캣 튜닝
JVM과 톰캣 튜닝JVM과 톰캣 튜닝
JVM과 톰캣 튜닝
 
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
 
Nodejs 트래픽 라우팅, 파일 서비스, 미들웨어
Nodejs 트래픽 라우팅, 파일 서비스, 미들웨어Nodejs 트래픽 라우팅, 파일 서비스, 미들웨어
Nodejs 트래픽 라우팅, 파일 서비스, 미들웨어
 
nodejs websocket & SOCKET.IO
nodejs websocket & SOCKET.IOnodejs websocket & SOCKET.IO
nodejs websocket & SOCKET.IO
 
정렬(버블정렬,선택정렬,삽입정렬)
정렬(버블정렬,선택정렬,삽입정렬)정렬(버블정렬,선택정렬,삽입정렬)
정렬(버블정렬,선택정렬,삽입정렬)
 
c++ API디자인 ch9. 발표자료
c++ API디자인 ch9. 발표자료c++ API디자인 ch9. 발표자료
c++ API디자인 ch9. 발표자료
 
b+tree
b+treeb+tree
b+tree
 
Hdfs
HdfsHdfs
Hdfs
 
hadoop ch1
hadoop ch1hadoop ch1
hadoop ch1
 
A tour of go
A tour of goA tour of go
A tour of go
 
Ch11. server infra
Ch11. server infraCh11. server infra
Ch11. server infra
 
대규모 서비스를 지탱하는 기술 ch6
대규모 서비스를 지탱하는 기술 ch6대규모 서비스를 지탱하는 기술 ch6
대규모 서비스를 지탱하는 기술 ch6
 
Chap4_2
Chap4_2Chap4_2
Chap4_2
 

Chapter3 - learning spark

  • 1. Learning Spark chapter3. RDD로 프로그래밍하기
  • 2. overview - RDD의 기초 - RDD생성하기 - RDD의 연산 - 트랜스포메이션 - 액션 - 여유로운 수행 방식(Lazy evaluation) - 스파크에 함수 전달하기 - 주로 쓰는 트랜스포메이션과 액션 - 가상 집합 연산 - 액션 - 영속화(캐싱)
  • 3. RDD(Resilient Distributed DataSet) 분산되어 존재하는 데이터 요소들의 모임 - 새로운 RDD를 만들거나 - 존재하는 RDD를 변형하거나 - 결과 계산을위해 RDD에서 연산을 호출 스파크는 자동으로 RDD에 있는 데이터들을 클러스터에 분배, 수행하는 연산들을 병렬화
  • 4. RDD 기초 - RDD는 분산되어 존재있는 변경 불가능한 객체 모음 - RDD는 사용자 정의 클래스를 포함해 파이썬, 자바, 스칼라의 어떤 타입의 객체든 가질 수 있다. - 두 가지 타입의 연산을 지원 - 트랜스포메이션(transformation) - 액션(action) - 스파크는 RDD를 lazy evaluation으로 액션을 사용하는 시점에 처리
  • 5. RDD 생성하기 두 가지 방법을 제공 - 외부 데이터를 로드 val lines = sc.textFile("README.md") - 직접 만든 프로그램에서 데이터 집합을 병렬화 val lines2 = sc.parallelize(List("pandas", "i like pandas"))
  • 6. RDD의 연산 두 가지 타입의 연산을 지원 - 트랜스포메이션(transformation) - 새로운 RDD를 만들어내는 연산(ex. map(), filter()) - 액션(action) - 프로그램에 결과를 돌려주거나 스토리지에 결과를 써 넣는 연산(ex. count(), first())
  • 7. 트랜스포메이션 - 새로운 RDD를 만들어 돌려주는 연산 - 실제로 액션이 사용되는 시점에 계산됨 - RDD는 변경 불가능한 것 <console>:25: error: reassignment to val - 트랜스포메이션 연산이 일어난 후, 새로운 RDD에 대한 레퍼런스를 리턴 - 가계도(lineage graph) - 필요시 각 RDD를 재연산하거나 저장된 RDD를 유실될 경우 복구 하기 위함
  • 8. 액션 - 프로그램에 최종 결과 값을 돌려주거나, 외부 저장소에 값을 기록하는 연산 작업 - 실제로 트랜스포메이션이 계산을 수행하도록 만든다. - 새로운 액션을 호출할 때마다 전체 RDD가 처음부터 계산됨
  • 9. 여유로운 수행 방식 - 스파크가 액션을 만나기 전까지 트렌스포메이션을 처리하지 않음 - 함수형 언어에서는 친숙한 방식 - RDD는 데이터를 가지고 있지 않다. 메타데이터에 명령어만 기록 후, 액션을 만날 때 실제로 수행
  • 10. 스파크에 함수 전달하기 트랜스포메이션과 액션 일부는 함수를 전달해야하는 구조 word = rdd.filter(lambda s: “error” in s) def containsError(s): return “error” in s word = rdd.filter(containsError)
  • 11. 주로쓰는 트랜스포메이션 트랜스포메이션 - map() - 함수를 받아 RDD의 각 데이터에 적용하고 결과를 돌려준다. - filter() - 함수를 받아 filter()함수를 통과한 데이터만 담아 결과를 돌려준다. - flatMap()
  • 12. 주로쓰는 트랜스포메이션 가상 집합 연산 - distinct() - union() - intersection() - subtract() - cartesian()
  • 13. 주로쓰는 액션 - reduce() - 두 개의 데이터를 합쳐 같은 타입 데이터 하나를 반환 하는 함수를 받는다. val sum = rdd.reduce((x,y) => x+y) - take() - count() - countByValue() - collect() - foreach()
  • 14. RDD 타입 값 변환하기 - 몇몇의 함수들은 특정한 타입의 RDD에서만 사용가능 (mean(), variance(), key/value페어) - 함수를 사용하기 전에 해당 타입이 지원하는지 여부 확인
  • 15. 영속화(캐싱) - RDD는 호출하는 액션들에 대한 모든 의존성을 재연산. - 이를 방지하기 위해서 영속화(persist) 요청할 수 있다. - LRU(Least Recently Used)를 사용해 관리. import org.apache.spark.storage.StorageLevel var result = input.map(x => x*x) result.persist(StorageLevel.DISK_ONLY) println(result.count()) println(result.collect().mkString(","))