All about Apache Spark
Spark에 대한 소개글은 아래 이전 포스팅을 참고하시면 됩니다.
이번 포스팅에서는 실제 활용에 있어서 꼭 필요한 내용, 유용한 내용에 대해 작성하겠습니다.
2020/10/04 - Apache Spark Review ① 소개
2020/10/04 - Apache Spark Review ② 주요 개념 : RDD
2020/10/04 - Apache Spark Review ③ 주요 개념 : Pair RDD
2020/10/04 - Apache Spark Review ④ 주요 개념 : DataFrame
RDD(Resilient Distributed Datasets)
Spark는 RDD라는 Immutable ,자바 가상 머신(JVM) 객체들의 집합으로 이루워져있습니다. 파이썬으로 Spark을 구동시큰 경우 데이터들은 JVM 객체들에 저장이 되어있고 Job이 빠르게 연산될 수 있도록 합니다.
RDD는 불변성(Immutable), 복원성(Resilient), 분산(Distributed) 성질을 가지고 있습니다. 다시 말해 한번 생성된 RDD는 절대 바뀌지 않는 불변의 성질이 있고 이로 인해 장애 내성을 직관적으로 보장합니다. RDD의 목적은 분산 컬렉션의 성질과 장애 내성을 추상화 하고 데이터를 벙렬처리 할 수 있도록 지원하는 것입니다.
RDD 연산자는 크게 변환(Transformation)과 행동(Action) 연산자로 나눌 수 있습니다. 변환 연산자는 RDD를 조작해 새로운 RDD를 생성하고(Filter, map), 행동 연산자는 실제 계산을 시작하는 역할을 합니다.(Count, foreach) 여기에서 지연 실행(Lazy evaluation) 이라는 중요한 개념이 나오는데, 변환 연산자는 실제로 연산을 실행하지 않고 기다리고 있다가 행동 연산자를 만났을때 Lasy하게 실행되게 됩니다.
[RDD 생성]
RDD를 생성하는 방법에는 두가지가 있습니다. parallelize() 함수를 수행하거 특정 위치에 저장된 파일을 읽는 것입니다.
sc.textFile의 마지막 파리미터 는 데이터 셋이 나눠진 파티션의 개수를 의미합니다.
data = sc.parallelize([('Amber', 22), ('Alfred', 23), ('Skye', 4), ('Albert', 12), ('Amber', 9)])
data_from_file = sc.textFile('/User/test.gz', 4)
[주요 변환 연산자(Transforamtion)]
1. filter : 데이터셋으로부터 특정 조건에 맞는 Element를 선택할 수 있습니다.
2. map : 원본 RDD의 모든 요소에 임의의 함수를 적용할 수 있는 연산자입니다.
3. flatmap : map() 함수와 비슷하게 동작하지만 결과로 리스트가 아닌 Flattened result를 리턴합니다.
4. distinct : 특정 칼럼에서의 중복된 값을 제거해 고유한 값을 리턴합니다.
5. sample : 데이터 셋에서 임의로 추출된 샘플을 리턴합니다.
[주요 행동 연산자(Action)]
1. take : 하나의 파티션에서 가장 위에 있는 n 행을 리턴합니다.
2. collect : RDD의 모든 엘리먼트를 드라이버로 리턴합니다.
3. reduce : 특정 함수를 사용해 RDD의 개수를 줄입니다.
4. count : RDD의 엘리먼트 개수를 셉니다.
5. saveAsTextFile : RDD를 텍스트 파일로 저장합니다.
6. foreach : RDD의 각 엘리먼트에 반복적으로 적용하는 함수입니다.
참고
- 12bme.tistory.com/307?category=737765
'데이터엔지니어링' 카테고리의 다른 글
Apache Spark Review ① 소개 (0) | 2020.10.04 |
---|
댓글