.
기본 개념 익히기
스파크의 기본요소
- 구조적 API
- Dataset
- DataFrame
- SQL
- 저수준 API
- RDD
- 분산형 변수
3.1 운영용 어플리케이션 실행
spark-submit
을 사용해서 대화형 쉘에서 개발하던 프로그램을 운영용 어플리케이션으로 쉽게 전환 가능spark-submit
은 어플리케이션 코드를 클러스터에 전송해 실행시키는 역할
- 스파크 어플리케이션 → StandAlone, Mesos, YARN 클러스터 매니저를 통해 실행
1 |
|
3.2 Dataset: 타입 안정성을 제공하는 구조적 API
- 자바와 스칼라의 정적 데이터 타입에 맞는 정적 타입코드를 지원하기 위해 고안된 스파크의 구조적 API
- 타입 안정성 지원
-
파이썬과 R에서는 사용 불가능
- DataFrame은 다양한 데이터 타입의 테이블형 데이터를 보관할 수 있는 Row타입의 객체로 구성된 분산 컬렉션
- Dataset → DataFrame의 레코드를 사용자가 자바나 스칼라로 정의한 클래스에 할당
- 자바의 ArrayList나 스칼라의 Seq 객체 등의 고정 타입형 컬렉션으로 다룰 수 있는 기능
- 타입 안정성을 지원 → 초기화에 사용한 클래스 대신 다른 클래스를 사용해 접근 불가능
- 대규모 어플리케이션 개발에 효율적
1 |
|
- Dataset은 필요한 경우에 선택적으로 사용할 수 있다는 장점
1 |
|
3.3 구조적 스트리밍
- 스파크 2.2 버전에서 안정화된 스트림 처리용 고수준 API
- 구조적 API로 개발된 배치모드의 연산을 스트리밍 방식으로 실행 가능.
1 |
|
- 윈도우 함수는 집계 시에 시계열 컬럼을 기준으로 각 날짜에 대한 전체 데이터를 가지는 윈도우를 구성.
1 |
|
- 스트리밍은 나머지는 동일하지만 read대신 readStream을 사용
maxFilesPerTrigger
→ 한번에 읽을 파일 수 설정
1 |
|
- 이 작업 역시 지연연산이므로 실행하기 위해 스트리밍 액션을 호출해야 함.
1 |
|
- 스파크는 이전 집계값보다 더 큰 값이 발생한 경우에만 인메모리 테이블을 갱신 → 항상 가장 큰 값을 얻을 수 있음.
1 |
|
3.4 머신러닝과 고급 분석
- MLlib 활용에 대한 내용
1 |
|
- 토요일은 6, 월요일은 1로 표현이 되므로 암묵적인 대소관계가 담길 수 있으므로 옳지않음.
1 |
|
- 학습 전 알고리즘 명칭 : Algorithm
- 학습 후 알고리즘 명칭 : AlgorithmModel
1 |
|
3.5 저수준 API
- 스파크는 RDD를 통해 자바와 파이썬 객체를 다루는데 필요한 기본 기능을 제공.
- 스파크의 거의 모든 기능은 RDD 기반
1 |
|
- RDD 사용법은 파이썬과 스칼라가 다름.
- 최신 버전의 스파크에서는 기본적으로 RDD를 사용하지 않지만, 비정형 데이터나 정제되지 않은 원시 데이터를 처리해야 한다면 RDD 사용
.
3부에서 계속