RDD Data Load, Save
지원포맷text파일, JSON, 하둡 sequence파일, csvHDFS, s3, switf, mysql, hbase, 카산드라, hive text파일 저장test("saveAndLoadTextFile") { val rdd = sc.parallelize(1 to 1000, 3) val codec = classOf[org.apache.hadoop.io.compress.GzipCodec] // save rdd.saveAsTextFile("/sub1") // save(gzip) rdd.saveAsTextFile("/sub2", codec) // load val rdd2 = sc.textFile("/sub1") println(rdd2.take(10).toList) }sequence파일 저장test("saveAn..
RDD filter And Sort
Filter, SortByKey, KeysAndValues자세한 설명은 생략.. Ex)test("Filter") { val rdd = sc.parallelize(1 to 5) val result = rdd.filter(_ > 2) println(result.collect.mkString(", ")) } test("SortByKey") { val rdd = sc.parallelize(List("q", "z", "a")) val result = rdd.map((_, 1)).sortByKey() println(result.collect.mkString(", ")) } test("KeysAndValues") { val rdd = sc.parallelize(List(("k1", "v1"), ("k2", "v2")..
RDD Operate Partition
Pipe데이터를 처리할 때 외부 프로세스 활용에 쓰인다. 운영체제에 종속이므로 아래 예제는 윈도우에서 하면 오류가 발생한다. test("Pipe") { val rdd = sc.parallelize(List("1,2,3", "4,5,6", "7,8,9")) val result = rdd.pipe("cut -f 1,3 -d ,") println(result.collect.mkString(", ")) }Coalesce, Repartition파티션 개수 조정.Coalesce은 줄이는 것만 처리, Repartition는 늘리는 것도 가능Coalesce은 셔플(X). Repartition는 셔플(O) RepartitionAndSortWithinPartitionsRepartition을 하는데 Key에 연산을 먹여서 ..
RDD Transformation aggregation
ReduceByKeykey, value 쌍으로 이루어진 컬렉션에서, 같은 key를 가진 값을 병합하고, 각 key 에 매칭되는 value들을 연산한다.중요한 것은 value 들을 계속 누적해 나가면서 계산한다는 것이고, 그래서 이 연산은 결합법칙, 교환법칙이 성립하는 수식을 넣어야 문제가 없다.reduceByKey(func: (V, V) => V): RDD[(K, V)] Ex)test("doReduceByKey"){ val rdd = sc.parallelize(List("a", "b", "b","b")).map((_, 1)) val result = rdd.reduceByKey( (x,y) => { println(s"x=$x y=$y") ;x+y } ) println(result.collect.mkStri..
RDD Transformation #2
GroupByRDD 원소들을 일정 기준에 따라 분리, K 타입을 키로 가지는 T 집합체를 리턴해 준다.groupBy[K](f: T => K): RDD[(K, Iterable[T])]Ex)test("GroupBy"){ val rdd = sc.parallelize(1 to 10) val result = rdd.groupBy { case i: Int if (i % 2 == 0) => "even" case _ => "odd" } result.collect.foreach { v => println(s"${v._1}, [${v._2.mkString(",")}]") } }result)even, [2,4,6,8,10] odd, [1,3,5,7,9]패턴 매칭 예는 아래 사이트 에서https://twitter.github..