본문 바로가기
빅데이터 부트캠프/Hadoop

빅데이터 부트캠프 55일차

by Mecodata 2022. 9. 22.

Spark

- MapReduce 형태의 클러스터 컴퓨팅 패러다임의 한계를 극복하고자 등장

- Hadoop에 비하여 처리 속도가 빠름 (Hadoop은 Hard disk 이용, Spark는 RAM(memory) 이용)

- Spark의 데이터 구조는 RDD (Reslient Distributed Dataset), Dataframe, Dataset
- RDD의 묶음 = 파티션(Partition)
- RDD는 스키마 X -> 보통 Dataframe(테이블) 형태로 표현
- Dataset = Dataframe

- In-memory 연산을 이용

- 객체 불변성을 가지고 있어 기존 데이터를 변경한 객체를 이용하려면 새로운 객체지정해야함 

- In-memory 연산 + 객체 불변성 -> 처리 속도 향상

 

Spark 실행 순서

- 스파크 데몬 실행(namenode) = spark/sbin 폴더에서 ./start-master.sh --host localhost번호 

- 스파크 데몬 실행(datanode) = spark/sbin 폴더에서 ./start-slave.sh spark://[namenode localhost번호]:7077

- 스파크 쉘(scala) 실행(namenode만) = spark/bin 폴더에서 ./spark-shell --master spark://localhost번호:7077

- pyspark 실행(namenode만) = spark/bin 폴더에서 ./pyspark --master spark://localhost번호:7077

 

Spark 기본(RDD)

- ctrl+L = 터미널 clear

- spark.sparkContext = sc로 줄여서 사용할 수 있음
- sc.parallelize(seq데이터 or list데이터) = RDD 생성 함수 (seq는 순서 O, list는 순서 X)
- sc.textFile = 텍스트 파일을 RRD로 읽어오는 함수 (print로 출력 불가)

- sc.wholetextFiles() = 파일의 경로 + 파일 내용 출력

 

- RDD파일명.collect().foreach(println) = RDD 파일 내용 출력 (흩어져 있는 RDD파일들을 하나로 합쳐 내용 한줄씩 출력)
- Spark RDD에서는 csv파일 읽는 방법 X -> textFile() 함수를 사용하여 변환

- rdd.map() 실행시 튜플의 명칭을 지정하여 튜플내의 원소에 대한 설정이 가능함

ex) rdd.map(f=>{(f._1, f._2)} 원소의 인덱스 순서를 이용할때는 .이 아닌 ._ 이용

(인덱스가 보통은 1부터인데 0부터일 수도 있음)

댓글