8월, 2019의 게시물 표시

Pair RDD란?

Pair RDD란? Pair RDD라는 것은 키-값 쌍(Key-value pair) 구조로 되어있습니다. Key-Value 구조는 다양하게 쓰이는데요, 그 중에 하둡 맵리듀스(MR), 캐싱 시스템이나 NoSQL 데이터베이스(Redis 등)에서 많이 쓰입니다.  Spark에 Key-Value라고 하면 Scala나 Java에서는 맵(map)이라고도 하고 Python에서는 딕셔너리(Dictionary) 구조라고 할 수 있겠죠? 꼭 Pair RDD 구조를 사용하지 않아도 되지만, 데이터를 편리하게 집계, 정렬, 조인할 수 있다는 강점이 있습니다! 한 가지 더! 스파크가 데이터를 파티션으로 나누고 이 파티션을 적절히 변경하고 활용할 수 있습니다. 파티셔닝과 연관된 것이 바로 '셔플링'이라고 하는 데 셔플링은 연산이 많이 필요하기때문에 데이터의 불필요한 셔플링을 피하는 방법도 중요합니다! 데이터의 그루핑, 정렬, 조인 연산 뿐아니라 누적 변수와 공유 변수 등 다양한 데이터 타입 및 방법들에 대해 알아보면 좋을 것 같아요.  <Pair RDD 생성> SparkContext의 일부 메서드는 Pair RDD를 기본으로 반환합니다. RDD의 keyBy 연산자에서는 RDD 요소로 키를 생성하는 함수를 받고 각 요소를 튜플로 매핑합니다.  예)  scala) val data = sc.textFile("/home/data/test.txt") scala) val trandata =data.map(_.split(",")) --> , 를 기준으로 split scala) val pairdata = trandata.map(tran => (tran(2).toInt, tran)) --> PairRDD 생성 마지막 .map(tran(2).toInt, tran)이 결국 앞에가 Key 뒤에가 Value가 됩니다.  즉, 데이터를 파...