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 |