-이번장에서 배울 것
0.Spark Shell을 사용하는 방법
-pyspark와 spark-shell이 있다. 이들은 학습이나 데이터 탐색에 interactive(대화식)하다.
1.SparkContext 사용하는 방법
-sc라고 불리는 Spark Context를 사용합니다.
2.RDD의 주요 개념
-그들은 무엇인가?
-RDD(Resilient Distributed Dataset)
-Resilient는 메모리에서 데이터가 사라져도 다시 재생할 수 있다는 뜻, Distributed는
클러스터를 통하여 처리한다는 뜻, Dataset은 최초 데이터는 파일로 불러와지거나
프로그래밍으로 생성될 수 있다는 뜻이다.
-RDD는 스파크에서 기본적인 데이터 단위이다.
-대부분의 스파크 프로그래밍은 RDD의 수행으로 구성된다.
-어떻게 그들을 생성하는가?
- 한개 또는 그 이상의 파일로 부터 불러오거나, 메모리에서 불러오거나, 또다른 RDD로
부터 불러온다.
-그들로 우리는 어떤 작업을 할 수 있는가?
-RDD 연산의 결과는 두가지 타입으로 나뉜다. 바로 Actions을 통해서 혹은 Transformations
을 통해서.
-Actions : RDD 타입에서 원하는 값을 반환하는 경우. (예를 들면 count()함수의 결과 같은)
-> count() - 데이터 개수 리턴
-> take(n) - 상위 n 개의 값을 리턴
-> collect() - 모든 값을 리턴
-> saveAsTextFile(file) - 텍스트 파일로 저장
-Transformations : 현재의 것을 기반으로 새로운 RDD를 정의하게 된다.
-RDD로 된 데이터는 변경이 불가능하다. 데이터를 수정하기 위한 문장이 필요하다. 그것은.
-map(function) - RDD기반의 각 레코드에 함수를 적용하여 새로운 RDD 를 생성한다.
->map(lambda line: line.upper())
-filter(function) - 논리 함수를 통하여 RDD기반의 각 레코드에 포함하는지 아닌지에 따라
새로운 RDD를 생성한다.
->filter(lambda line: line.startswith(‘I’))
3.스파크가 기능적인 프로그래밍의 원리를 어떻게 사용하는가?
-LazeExecution(게으른 진행): LazeExecution을 통해서 코드를 실행할 때, Actions이 수행되
기 전까지는 RDD는 처리되지 않는다.
mydata = sc.textFile(“purplecow.txt”)
mydata_uc = mydata.map(lambda s: s.upper())
mydata_filt = mydata_uc.filter(lambda s: s.startswith(“I”))
mydata_filt.count() #Actions 이 수행되는 순간
-Chaining Transformations(사슬 변신!)
위의 코드를 죽죽 이어서 코딩하는 것이라 생각하면 쉬움.
sc.textFile(“purplecow.txt”).map(lambda s: s.upper()).filter(lambda s: s.startswith(“I”)).count()
사슬처럼 이러서 변형시킨 코드라는 의미로 알고 넘어간다. R의 %>% 파이프같은 개념.
-RDD Lineage and toDebugString
수행한 작업을 거꾸로 올라가며 출력해줌.
print mydata_filt.toDebugString()
print를 해주어 깔끔하게 출력.
-Passing Named Functions(자작나무 함수를 만든걸 사용함.)
def toUpper(s):
return s.upper()
mydata = sc.textFile(“purplecow.txt”)
mydata.map(toUpper).take(2)
만든 toUpper함수를 그냥 넣기만 하면 알아서 parameter 매개변수에 쑉 들어가서 실행됨.
-중요포인트
1.스파크는 스파크 쉘을 통해서 대화형으로 사용할 수 있다.
2.RDD는 스파크의 핵심 컨셉이다.
3.RDD연산은 새로운 RDD를 생성하는 Transformation과 value를 뱉어내는 actions가 있다.
4.lazy execution은 actions을 받을 때까지 Transformation을 수행하지 않는 것 !
5.스파크는 기능적인 프로그래밍을 사용한다. 가상의 함수를 활용가능하다.(python, scala)
이글은 서울과학기술대학교 권혁윤 교수님의 강의를 토대로 필기한 내용임을 밝힙니다. :)
'빅데이터 시스템' 카테고리의 다른 글
Pair RDD와 함께 데이터 병합. (0) | 2019.12.15 |
---|---|
RDD와 함께 스파크 활용하기. (0) | 2019.12.15 |
데이터 파일 파티셔닝 (0) | 2019.12.15 |
Impala와 Hive로 모델링하고 관리하기 (0) | 2019.12.15 |
Impala와 Hive 소개 (0) | 2019.12.15 |
댓글