스파크 애플리케이션은 스파크 클러스터와 사용자 코드 두가지 조합으로 구성된다. 애플리케이션 개발시 템플릿을 이용하여 기본적인 틀을 잡을 수 있다. 스파크에서 지원하는 언어에 따라 해당 절에서는 스칼라, 파이썬, 자바로 어플리케이션을 작성하는 방법을 소개하고 있다.
스파크 드라이버 : 스파크 애플리케이션의 실행을 제어하고 스파크 클러스터의 모든 상태 정보를 유지한다. 물리적 컴퓨팅 자원 확보와 익스큐터 실행을 위한 클러스터 매니저와 통신할 수 있어야 한다.
저수준 API 유형에는 RDD 인터페이스 외에도 분산형 공유변수가 존재한다. 분산형 공유 변수에는 브로드캐스트 변수와 어큐뮬레이터라는 두 개의 타입이 존재한다. 브로드캐스트 변수 사용시에는 모든 워커 노드에 큰 값을 저장하므로 재전송 없이 ...
RDD에는 key-value형태의 데이터를 다룰 수 있는 다양한 메서드가 존재한다. 이러한 메서드들은 <연산명>ByKey 형태의 이름을 가지며 PairRDD타입만 사용할 수 있다.
스파크에는 두 종류의 저수준 API가 있다. 분산 데이터 처리를 위한 RDD와 브로드캐스트 변수와 어큐뮬레이터처럼 분산형 공유 변수를 배포하고 다루기 위한 API가 있다. 저수준 API를 사용하는 상황은 다음과 같다.
Dataset은 구조적 API의 기본 데이터 타입이다. 앞서 살펴본 DataFrame은 Row타입의 Dataset이다. Dataset은 JVM을 사용하는 언어인 스칼라와 자바에서만 사용할 수 있다. 그렇다면 Dataset을 사용해야하는 이유는 무엇일까?
스파크 SQL은 하이브 메타스토어를 사용하기 때문에 하이브와 잘 연동된다. 스파크 SQL은 하이브 메타스토어에 접속한 뒤 조회할 파일 수를 최소화하기 위해 메타데이터를 참조한다.
해당 장에서는 스파크의 여섯 가지 핵심 데이터소스를 중점적으로 소개한다. 핵심 데이터소스의 종류는 다음과 같다.CSV,JSON,파케이,ORC,JDBC/ODBC 연결,일반 텍스트 파일, ...
7장에서는 단일 데이터셋에서의 집계 방식만 알아보았다. 하지만 대부분의 경우 다양한 데이터셋을 활용하는 경우가 더 많기에 조인을 활용해 서로 다른 데이터를 조합하여 원하는 형태로 만드는 방법을 알아야 한다.
집계를 수행하려면 key나 group을 지정하고 하나 이상의 column을 변환하는 방법을 지정하는 집계 함수를 사용해야 한다. 이는 gorup by, window, grouping set, rollup, cube 등의 방법을 사용하여 구현할 수 있다.
스파크에서 데이터를 사용하기 위해 프로그래밍 언어의 고유 데이터 타입을 스파크 데이터 타입으로 변환히키기 위해서는 lit함수를 사용한다. lit함수는 다른 언어의 데이터 타입을 스파크 데이터 타입에 매핑시켜 변환한다.
DataFrame은 Row타입의 레코드와 각 레코드에 수행할 연산 표현식을 나타내는 여러 컬럼으로 구성된다. DataFrame의 스키마는 각 컬럼명과 데이터 타입을 정의하고, 파티셔닝은 DataFrame이나 Datset이 클러스터에서 물리적으로 배치되는 형태를 정의한다
구조적 API에는 3가지 분산 컬렉션이 존재한다.DataSetDataFrameSQL 테이블과 뷰배치와 스트리밍처리에서 구조적 API를 사용할 수 있으며, 구조적 API를 활용해 배치 작업을 스트리밍 작업으로 변환할 수 있다.
(Ch3) 스파크 기능 둘러보기 본 챕터에서는 2장에서 다루지 않은 API와 스파크가 제공하는 여러 라이브러리, 기능을 소개한다.
데이터를 처리하는 경우에는 단일 컴퓨터로 처리하기에 어려움이 있다. 그러기에 여러 컴퓨터의 자원을 모아서 하나의 컴퓨터처럼 작동하도록 하는 컴퓨터 클러스터를 구성한다. 이것만으로도 충분하지 않아 작업을 조율할 프레임워크가 필요한데 스파크가 이러한 역할을 수행한다.
이 글은 "OREILLY의 스파크 완벽 가이드" 책을 공부하며 정리를 위해 남기는 글이다. 이 글은 전문적인 글이 아니다. 데이터 엔지니어를 목표로하며 나아가는 발자취를 남기는 것이며...