RDD map을 사용 하기전에 특정 라인(예, 첫번째 라인)을 사용하고 싶지 않다면 다음과 같은 mapPartitionWithIndex()를 사용한다.
rdd.mapPartitionsWithIndex(
(i, iterator) => if (i == 0) iterator.drop(1) else iterator)
예제는 다음과 같다.
scala> val rdd = sc.parallelize(List("samuel", "kyle", "jun", "ethan", "crizin"), 5)
rdd: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[0] at parallelize at <console>:24
scala> rdd.mapPartitionsWithIndex((i, iterator) => if (i == 0) iterator.drop(1) else iterator).foreach(println)
kyle
crizin
ethan
jun
scala> rdd.mapPartitionsWithIndex((i, iterator) => if (i % 2 == 0) iterator.drop(1) else iterator).foreach(println)
kyle
ethan
'scala' 카테고리의 다른 글
| [sbt] dependency 추가시 %%(double percent)와 %(percent) 차이점 (0) | 2017.10.30 |
|---|---|
| [spark2] groupByKey를 쓰지 않도록 한다 (0) | 2017.08.10 |
| [spark2] mapPartitionWithIndex 예제 (0) | 2017.08.10 |
| [scala] Product 이해하기 (0) | 2017.08.10 |
| [spark] [펌질] wide dependecy, narrow dependency (0) | 2017.08.08 |
| [spark2] partitonBy, HashPartitioner, RangePartitioner 예제 (0) | 2017.08.07 |



댓글을 달아 주세요