본문 바로가기

Spark

2-2.RDD - Operations

Passing Function

class MyClass(object):
    def func(self, s):
        return s
    def doStuff(self, rdd):
        return rdd.map(self.func)


위와 같이 map 이라는 함수 ( 정확히 말하면 RDD Transformations ) 을 실행할 때 func 를 변수로 넘길 수 있다. 하지만 python 에서 제공하는 lambda 를 이용해 익명함수로 넘기는것도 아래와 같이 가능하다.



class MyClass(object):
    def __init__(self):
        self.field = "Hello"
    def doStuff(self, rdd):
        return rdd.map(lambda s: self.field + s)




Key-Value Pairs RDD

이 내용은 이런게 있다고만 알아두자!

RDD 를 나중에 그룹화 하거나 aggregating 을 키값을 기준으로 할때 RDD 를 key-value RDD 타입으로 넘기는 방법이 distributed 셔플 연산에서 가장 common 한 방법인데, 지금 이렇게 말하면 누가 뭔말인지 알리오... ㅋㅋㅋㅋ 


그냥 나중에 나왔을 때 자세히 보자! 


추상적으로 RDD 도 키-값 형태로 만들 수 있고, 여기서 키 값이 나중에 셔플링( 실제 데이터가 네트웍을 타고 분산 환경에서 왔다 갔다 하는! ) 할 때 중요한 값이 된다. 는 정도만 알고 가자!


lines = sc.textFile("data.txt")
pairs = lines.map(lambda s: (s, 1))
counts = pairs.reduceByKey(lambda a, b: a + b)






Transformations

lazy operations 이다. 그래도 RDD objects 를 리턴하기 때문에 아직 연산이 실행된 상태가 아니다.


참조 : http://spark.apache.org/docs/latest/programming-guide.html#transformations


Actions

non-RDD 값이 리턴 된다. 실제 연산이 일어 난다고 보면 된다.


참조 : http://spark.apache.org/docs/latest/programming-guide.html#transformations



'Spark' 카테고리의 다른 글

3. Spark SQL, DataFrames and Datasets  (0) 2017.01.22
개발환경 셋팅하기 with pycharm  (0) 2016.06.14
2-1. RDD - Parallelized Collections, External Datasets  (0) 2016.06.03
2. RDD  (0) 2016.04.05
1. spark 설치하기  (0) 2016.04.05