본문 바로가기
데엔(Data-Engineering)/스파크(Spark)

[Spark] 03. 스파크 기초 (Distributed Data-Parallel / Key-Value RDD)

by KwonSoonBin 2023. 2. 12.

Distributed Data-Parallel?


1. 데이터를 여러개로 쪼개서 여러 노드로 보낸다
2. 여러 노드에서 각자 독립적으로 task를 적용
3. 각자 만든 결과값을 합치는 과정


※노드간 통신같이 신경써야될 것이 늘어난다

Spark를 이용하면 분산된 환경에서도 일반적인 병렬처리를 하듯 코드를 짜는게 가능하다.

Spark는 분산된 환경에서 데이터 병렬 모델을 구현해 추상화 시켜주기 때문이다.

 

 

분산처리 문제

분산처리로 넘어가면서 신경써야될 문제가 많아졌다

• 부분 실패 - 노드 몇개가 프로그램과 상관 없는 이유로 인해 실패
• 속도 - 많은 네트워크 통신을 필요로 하는 작업은 속도가 저하

 

메모리 > 디스크 > 네트워크

네트워크는 메모리 연산에 비해 100만배 정도 느리다

 


 

Structured Data 와 RDD

Key와 Value 쌍을 갖는 Key-Value RDD
(Key, Value) 쌍을 갖기 때문에 Pairs RDD라고도 불린다.

 

Single Value RDD
• 예) 텍스트에 등장하는 단어 수 세기 (날짜)

Key-Value RDD
• 예) 넷플릭스 드라마가 받은 평균 별점 (날짜, 승객수)

 

Reduction

• reduceByKey() - 키값을 기준으로 테스크 처리
• groupByKey() - 키값을 기준으로 벨류를 묶는다
• sortByKey() - 키값을 기준으로 정렬
• keys() - 키값 추출
• values() - 벨류값 추출

 

Join

• join
• rightOuterJoin
• leftOuterJoin
• subtractByKey

 

Mapping values

• mapValues()
• flatMapValues()

 

Value만 다루는 연산들이지만 RDD에서 key는 유지된다

Key Value 데이터에서 Key 를 바꾸지 않는 경우
map()대신 value만 다루는 mapValues() 함수를 써주자 Spark 내부에서 파티션을 유지할 수 있어 더욱 효율적

 

 

 

댓글