더북(TheBook)

5.1 DataFrame 다루기

 

4장에서는 RDD를 다루는 여러 방법을 알아보았다. RDD는 데이터를 직접 다룰 수 있는 스파크 하위 레벨 인터페이스이자 스파크 런타임의 핵심이다. 한편 스파크 버전 1.3에서 소개된 DataFrame API는 칼럼 이름과 타입이 지정된 테이블 형식의 분산 정형 데이터를 손쉽게 다룰 수 있는 상위 레벨 인터페이스를 제공한다.

스파크 DataFrame은 동일한 이름의 유사 개념을 제공하는 여러 다른 언어에서 영향을 받았다. 대표적으로 파이썬 Pandas 패키지로 제공되는 DataFrame, R 언어의 DataFrame, 줄리아( Julia) 언어가 제공하는 DataFrame이 있다. 스파크 DataFrame이 이 언어들과 다른 점은 분산 처리를 염두에 둔 설계와 카탈리스트 엔진에 있다. 스파크 카탈리스트 엔진은 플러그인으로 확장 가능한 데이터 소스, 규칙, 데이터 타입 등을 바탕으로 리소스 사용량을 실시간으로 최적화할 수 있다. 5.5절에서 자세히 설명한다.

스파크 DataFrame은 SQL 및 도메인 특화 언어(DSL)로, 작성된 표현식을 최적화된 하위 레벨 RDD 연산으로 변환한다. 따라서 동일한 DataFrame API를 스파크가 지원하는 모든 언어(스칼라, 자바, 파이썬, R 언어)와 데이터 소스(파일, 데이터베이스 등)에 동일한 방식과 유사한 성능으로 사용할 수 있다. DataFrame은 현재 스파크에서 매우 중요한 기능 중 하나로, 스파크 SQL을 가장 활발한 스파크 컴포넌트로 만든 원동력이다. 스파크 버전 2.0은 DataFrameDataset의 일종으로 구현했다.

정형 데이터는 데이터 구조를 미리 파악할 수 있다는 장점 덕분에 여러 빅데이터 사례에서도 자주 활용하며, DataFrame은 이러한 정형 데이터를 효과적으로 다룰 수 있는 방법을 제공한다. DataFrame을 사용하면 칼럼 이름으로 데이터를 참조할 수 있고, 대다수 데이터 분석가가 자연스럽게 데이터를 조작할 수 있는 SQL 쿼리를 이용해 데이터에 접근할 수 있다. 또 DataFrame은 다양한 소스의 데이터를 손쉽게 통합할 수 있도록 지원한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.