SOGM'S Data

SPARK_01 : RDD_1 본문

About Data/Engineering

SPARK_01 : RDD_1

왈왈가부 2022. 1. 11. 01:13

무비 렌즈 데이터로 영화 평점 COUNT()하는 예제 

 

1. Spark context 생성. 각 메소드는 주석 참조

from pyspark import SparkConf, SparkContext
import collections

conf = SparkConf().setMaster("local").setAppName("RatingsHistogram") 
#set master의 경우 cluster가아닌 local에서 실시. 즉 데이터 분산 x 
#sparkAppname은 spark web ui에서 식별할 수 있는 값.
sc = SparkContext(conf = conf)

 

2. sc객체로 데이터 읽어오기. 

lines = sc.textFile("file:///SparkCourse/ml-100k/u.data")
ratings = lines.map(lambda x: x.split()[2]) #  map을 통한 ratings이라는 새로운 rdd생성

이때 u.data의 구조는 아래와 같다.

좌측부터

유저id , 영화id ,   평점,    timestamp

하나의 줄(row)가 하나의 RDD가 된다. 위 사진으로만 친다면 11줄이니까 11개의 RDD가 생성.

x.split()[2]이므로 평점 필드를 불러온다. 

-> 즉 모든 줄에서 평점 값을 꺼내 ratings이라는 새로운 RDD로 만든다.

ratings의 모습은 아래와 같을 것이다.

이때 lines RDD에 map을통해 ratings RDD를 생성했더라도 lines RDD는 변하지 않는다!

 

3. countByValue

result = ratings.countByValue()
sortedResults = collections.OrderedDict(sorted(result.items()))
for key, value in sortedResults.items():
    print("%s %i" % (key, value))

countByValue 후  각 평점은 (key, value) -> (평점, count)를 resullt로 저장.  -> RDD가 아닌 ACTION

(3,4) (1,2) (2,3) (4,1) (5,1) 를 출력하는 PYTHON코드 (KEY 값으로 정렬)

-> (1,2) (2,3) (3,4) (4,1) (5,1) 

Comments