본문 바로가기

전체 글

(114)
단속사회 #0-1 단속사회이 책은 사회학과 관련된 책이다. 책 제목이 말하는 '단속사회'란 단절되고 속해있는 사회라는 의미이며, 좀더 풀이해 보자면 같고 비슷한 것에는 끊임없이 접속(연결)해 있고, 나 혹은 우리와 다른 것은 철저히 차단하는 현 사회를 의미한다. 이 책의 가장 중요한 핵심 단어는 '편' 과 '곁' 이다. '편' 은 아군, 적군의 의미로 해석되며, 맹목적이고 무조건 적인 편 가르기이다.반면에 '곁'은 나의 말과 생각, 행동들을 옆에서 조언하고 참견하고 비평해주는 그룹이다. 위 이야기를 엮어 보면 '단속사회' , '편' 과 '곁' 은 동일한 의미로 보아도 무방할 것이다. 프롤로그삶에 있어 무기력하고 고통받고 있다고 생각될 때, 이것을 아무리 주변에 호소하고 고백해도 이 감정은 줄어드는게 아니라 오히려 깊어지기..
Spark Cluster #1 용어 정리마스터모델링 관점에서 보았을 때, 클러스터 운영 및 제어에 사용되는 논리적 서버를 말한다. 슬레이브마스터가 아닌 워커 노드워커 노드작업이 수행되는 서버클러스터여러 개의 서버가 네트워크를 통해 연결되어 마치 하나의 서버인 것처럼 동작드라이버 프로그램스파크 컨텍스트를 생성 관리하는 매니저. 메인함수를 시작하는 프로그램을 가리킨다.Executor워커 노드에서 실행되는 프로세스(스래드가 아니라 프로세스가 실행된다.)스파크 컨텍스트스파크의 시작점(데이터베이스의 커넥션과 비슷) 또는 스파크 클러스터의 연결을 의미컨텍스트를 공유하는 것은 불가능하다.어플리케이션 패키지 파일작성된 드라이버 프로그램을 jar 로 패키징한 파일구성도작업 수행 절차드라이버 프로그램 작성jar 로 패키징, "어플리케이션 패키지 파일"..
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 Action RDD action액션 = 결과값이 정수나, 리스트, 맵 등 RDD가 아닌 다른 타입결과값이 RDD 인건 트랜스포메이션이라 한다.둘 다 Lazy evaluation 방식이다. -> 연산을 계속 누적했다가 실제로 계산이 필요한 시점이 되어서야 실행 어떤 RDD의 map, flatMap, reduceByKey 등 트랜스포메이션 메서드를 100번 호출한다하더라도, count() 같은 액션 메서드를 호출하는 시점이 돼서야 비로서 그동안 쌓여있던 100개의 트랜스포메이션 연산을 순차적으로 실행하게 된다.-> 액션 메서드를 여러번 호출하면 트랜스포메이션 연산도 여러번 호출될 수 있다.! 출력 연산 first첫번째 원소를 하나 리턴한다.take입력 인자의 숫자만큼 원소를 리턴해준다.takeSample샘플 추츨. RD..
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..