Chapter3 스파크 기능 둘러보기

본 챕터에서는 2장에서 다루지 않은 API와 스파크가 제공하는 여러 라이브러리, 기능을 소개한다.

Spark-submit 명령어

Spark-submit을 활용하면 대화형 shell에서 개발한 프로그램을 운영용 어플리케이션으로 전환할 수 있다. Spark-submit명령은 어플리케이션 코드를 클러스터에 전송해 실행시키는 역할을 수행한다. 전송된 어플리케이션은 종료되거나 에러가 발생할 때까지 실행된다. Spark-submit 실행시 옵션 지정을 통해 필요한 자원과 실행 방식을 지정할 수도 있다.

Dataset - 타입 안정성을 제공하는 구조적 API

Dataset은 정적 타입 코드(자바, 스칼르, C, C++등)를 지원하기 위해 고안된 구조적 API이다. 동적 타입 언어인 파이썬과 R에서는 사용이 불가능하다. Dataset API는 DataFrame의 레코드를 클래스에 할당하여 고정 타입형 컬렉션(자바 : ArrayList, 스칼라 : Seq)으로 다룰 수 있는 기능을 제공한다. 타입 안정성을 지원하기 때문에 초기화에 사용한 클래스 대신 다른 클래스가 접근할 수 없다.
Dataset의 장점으로는 우선 필요한 경우에 선택적으로 사용할 수 있다는 점이다. 또한 스파크에서 제공하는 여러 함수를 이용해 추가 처리 작업을 할 수 있는데, 타입 안정성을 보장하는 코드에서 저수준 API와 고수준 API를 이용해 빠른 분석을 가능하게 한다. collect, take 메소드를 이용해 호출할 때 DataFrame의 Row타입으로 반환하는게 아니라 Dataset에 매개변수로 지정한 타입의 객체를 반환하여 타입 안정성을 보장한다.

구조적 스트리밍

구조적 스트리밍은 스트림 처리용 고수준 API이다. 구조적 스트리밍을 통해 구조적 API로 개발된 배치모드의 연산을 스트리밍 방식으로 실행할 수 있으며, 지연 시간을 줄이고 증분 처리가 가능하다. 배치 처리용 코드를 수정하여 스트리밍 처리로 수행하고 빠른 결과값을 기대할 수 있다.

머신러닝과 고급 분석(MLlib)

스파크는 내장 머신러닝 알고리즘 라이브러리인 MLlib를 제공하는데, 이를 활용하여 대용량 데이터의 전처리, 멍잉, 모델 학습, 예측을 수행할 수 있다. 모델 학습 과정에서 분류, 회귀, 군집화, 딥러닝까지 머신러닝 관련 API를 제공한다.

저수준 API

스파크는 RDD를 통해 자바와 파이썬 객체를 다루는데 필요한 다양한 기본 기능을 제공하고, 거의 모든 기능이 RDD를 기반으로 만들어졌다. 원시 데이터를 읽을 때 구조적 API를 사용하지 않고 RDD를 사용하는 이유는 파티션과 같은 특성을 보다 더 세밀하게 조절할 수 있기 때문이다. 언어에 관계 없이 동일한 실행 특성을 보이는 DataFrame과 달리 RDD는 세부 구현 방식에서 차이가 있다.

** RDD의 간단한 설명은 스파크 내부의 저장된 데이터이며 변경 불가능한 특성을 가진다고 한다.

SparkR

SparkR은 스파크를 R 언어로 사용하기 위한 기능이다. 파이썬 대신 R을 사용한다는 차이점만 존재할 뿐 기능적인 측면에서는 모두 같다.

Reference

스파크 완벽 가이드
아파치 스파크

profile
개발자 지망생입니다.

0개의 댓글