Patrick's 데이터 세상

Spark RDD 실습 본문

Data Analysis/Spark

Spark RDD 실습

patrick610 2020. 11. 5. 21:55
반응형
SMALL

 

 

 

1. Spark 실행

 

# Spark 디렉토리 하위 bin 디렉토리에서
./spark-shell

 

 

2. 간략한 Scala 데이터 변형 작업

 

# 변수 선언 val = 변경 불가, var = 변경 가능
# Spark Context로 parallelize하여 10에서 50까지 데이터를 10으로 나누어 생성
val number = sc.parallelize(10 to 50 by 10) 

Spark의 가장 기본 API인 RDD 형태이며 Int 타입으로 되어있습니다.

 

 

number.take(5)

내용을 확인해보면 Array에 Int 타입으로 입력되었습니다.

 

 

val numbersq = number.map(num => num*num)

map transformation 연산자를 통해 number의 데이터를 num이라는 변수에 넣어 num끼리 서로 곱하는 구조입니다.

 

 

numbersq.take(5)

내용 확인.

 

 

 

# _(placeholder)는 인자가 무엇이던 값을 받는다.
# toString = String 형변환, reverse = 값을 거꾸로.
val resq = numbersq.map(_.toString.reverse)

String으로 형변환하여 값이 반대로 되어있습니다.

 

 

 

 

3. Scala로 WordCount 실행

# README 파일을 불러들임.
val data = sc.textFile("/home/park/spark-3.0.1-bin-hadoop3.2/README.md")

 

# 공백 기준으로 데이터 자르기
# flatmap은 Array를 1차로 평평한 구조로 만드는 것.
val datasplit = data.flatMap(line => line.split(" "))
datasplit.take(10)

 

 

# Key value 형태로 변경
val datakey = datasplit.map(word => (word, 1))

datakey.take(10)

 

 

# 키가 같을 경우 value를 합쳐서 reduce를 진행
val datakr = datakey.reduceByKey(_+_)

10개만 잘라서 보면 For 단어가 3개, processing 단어가 2개인 것을 볼 수 있다.

 

 

 

# 만든 데이터를 파일로 저장
datakr.saveAsTextFile("/home/park/spark-3.0.1-bin-hadoop3.2/test")

 

 

 

반응형
LIST

'Data Analysis > Spark' 카테고리의 다른 글

Spark RDD  (0) 2020.11.04
Spark Standalone 실행  (0) 2020.11.04
Apache Spark 기본 이론  (0) 2020.10.26
Comments