RDD Operation(2) - Actions
RDD Operation(1) -Transformations 보러 가기
Actions
- collect()
- take()
- count()
- reduce()
- saveAsTextFile()
collect(), take()는 앞의 진도에서 사용해 본 Action입니다.
위의 함수들을 차례대로 다뤄보겠습니다.
collect()
RDD 내의 모든 값을 리턴합니다. 빅데이터를 다루고 있다면 모든 값을 호출하는 것은... 위험할 수 있습니다!
nums = sc.parallelize(list(range(10)))
nums.collect()
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
take
RDD에서 앞쪽 n개의 데이터의 list를 리턴합니다. collect()보다는 안전하게 데이터를 확인할 수 있습니다.
nums.take(3)
위 코드를 실행할 경우 무엇이 나올까요? 한 번 생각해보세요!
[0, 1, 2]
결과는 위와 같이 나옵니다. 앞에서부터 차례대로 3개가 나옵니다. take는 어렵지 않습니다!
count
RDD에 포함된 데이터 개수를 리턴합니다.
nums.count()
count() 함수는 많이 보셨을 것 같아요. 이것도 한 번 어떤 값이 출력될 지 속으로 준비해보시고...
10
네. range(10)을 입력하고 생성했었으니 count하면 10이 나옵니다!
reduce
reduce() 함수는 보신 적 있으신가요? 저는 맵리듀스를 공부하며 처음 알게 되었습니다.
MapReduce를 스파크에서 어떻게 구현할까요? Map은 transformation 함수로, Reduce는 Action 함수로 구현했습니다.
Reduce할 데이터가 RDD로 메모리상에 존재하므로 이전의 다른 구현체보다 훨씬 빠르게 MapReduce를 실행할 수 있습니다.
num.reduce(lambda x, y: x+y)
무슨 값이 나올까요? 모든 데이터를 차례차례 더하는 sum()이 구현되었네요.
0~9까지 더한 값은
45
가 되겠습니다!
saveAsTextFile
RDD 데이터를 파일로 저장합니다. 아래 코드를 실행하면 file.txt라는 파일에 RDD 내용이 저장될 것입니다.
file_path = os.getenv('HOME')+'/aiffel.bigdata_ecosystem/file.txt'
nums.saveAsTextfile(file_path)
!ls -l ~/aiffel/bigdata_ecosystem
total 8
drwxr-xr-x 2 root root 4096 Sep 3 06:33 file.txt
-rw-r--r-- 1 root root 20 Sep 3 04:43 test.txt
lrwxrwxrwx 1 root root 22 Sep 3 00:48 train.csv -> /aiffel/data/train.csv
file.txt 내용을 잘 보시면 디렉토리 타입으로 생성되어 있습니다. 이 디렉토리 안에 들어가 보면 part-0000 라는 이름의 텍스트 파일이 생성되어 있습니다.
스파크는 '분산형 빅데이터 시스템'이라는 것을 잊어서는 안 됩니다. 스파크가 다룰 파일 사이즈는 하드디스크 하나에 다 담지 못할 만큼 큰 경우일 가능성이 높습니다.
현재 실습한 건 매우 작은 RDD였지만 sc.parallelize()를 통해 분산형 데이터를 생성을 해본 것입니다!
RDD 과정 요약
# RDD 생성
rdd = sc.parallelize(range(1,100))
# RDD Transformation
rdd2 = rdd.amp(lambda x: 0.5*x - 10).filter(lambda x: x> 0)
# RDD Action
rdd2.reduce(lambda x, y: x + y)
결괏값으로 무엇이 나올까요? 암산으로 계산하기는 당연히 어렵습니다. 그렇다고 종이에 풀 것도 아니니까요! 그러므로 RDD 생성, 변환, 액션 과정을 꼭 이해해 보고 넘어가보세요!
- 0부터 99까지의 rdd 생성
- 모든 값에 0.5를 곱하고 -10한 값들 중에서 음수가 아닌 것
- 그리고 그 모든 값을 더한 값이 출력됩니다.
지금까진 어떠셨나요? 저는 실습 예제가 매우 쉬운 편에 속해서 거부감 없이 잘 따라 오게 되었습니다. 마지막은 진짜 맵리듀스 실습이니 꼭 마지막까지 따라와주세요~
Author And Source
이 문제에 관하여(RDD Operation(2) - Actions), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@cha-suyeon/RDD-Operation2-Actions저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)