Top

PySpark 배우기 [파이썬과 스파크 2.0으로 대용량 데이터 처리 애플리케이션 다루기]

  • 원서명Learning PySpark (ISBN 9781786463708)
  • 지은이토마스 드라바스(Tomasz Drabas), 데니 리(Denny Lee)
  • 옮긴이이진기
  • ISBN : 9791161750705
  • 30,000원
  • 2017년 10월 30일 펴냄
  • 페이퍼백 | 336쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

책 소개

요약

스파크의 동작 원리와 구성 요소 등을 설명하는 것으로 시작해, 스파크가 왜 고속 처리나 분산 처리에 유리한 구조를 하고 있는지, 속도 개선에 가장 큰 영향을 준 부분은 어떤 부분인지를 이해하기 쉽게 설명한다. 다음으로는 스파크 분석 라이브러리 사용법과 그 라이브러리를 이용한 실제 데이터 분석에 초점을 두고 있다. 마지막으로 실시간으로 들어오는 데이터에 대해서 어떻게 처리하고 테스트하는지와 최종적으로 만들어진 애플리케이션을 스파크 혹은 다른 방법을 통해서 패키지화하는 방법을 제공한다.

추천의 글

파이스파크(PySpark) 첫걸음을 위해 이 책을 선택한 것에 감사한다. 독자 여러분도 나처럼 많은 기대를 하고 있을 것이라 생각한다. 데니가 나에게 이 책에 대해 이야기했을 때 매우 기뻤다. 아파치 스파크(Apache Spark)를 멋진 플랫폼으로 만들기 위해 가장 중요한 것은 자바/스칼라(Scala)/JVM과 파이썬(또는 R)을 동시에 지원하도록 하는 것이다. 이전의 스파크 책들은 코어 언어에 집중했거나 JVM 언어만을 집중적으로 다뤘다. 이 책을 통해 숙련된 스파크 교육자로부터 파이스파크를 배울 수 있다. 두 언어를 모두 다룰 수 있게 되면, 데이터 과학자의 역할과 데이터 엔지니어의 역할을 모두 수행할 수 있게 된다. 동시에 양쪽의 커뮤니티로부터 좋은 아이디어를 얻을 수도 있다.
이 책의 첫 번째 버전을 감수할 기회를 갖게 된 것에 감사한다. 이로 인해 이 프로젝트에 대해 더 큰 관심을 가질 수 있게 됐다. 나는 지금까지 여러 비슷한 콘퍼런스와 밋업(meet-up)에 참여해왔고, 저자들이 스파크에 대한 새로운 개념을 여러 청중 앞에서 소개하는 것을 지켜봐왔다. 그들의 모든 경험은 이 책에 잘 소개돼 있다. 이 책은 단순히 파이스파크를 소 개하는 것을 넘어서 그래프프레임(GraphFrames)이나 텐서프레임(TensorFrames) 같은 커뮤니티에 서의 여러 패키지를 소개하기도 했다.
어떤 툴을 사용할지 정할 때 커뮤니티를 이용하면 좋다. 파이썬 커뮤니티는 매우 활성화돼 있으며 개인적으로 파이썬 스파크 커뮤니티에 가입해 활동할 것을 권한다. 이를 통해 데니 리나 토멕 드라바스(Tomek Drabas)와 같은 좋은 친구와 교류하며 정보를 얻을 수 있다. 또한 다양한 스파크 커뮤니티에서 활동함으로써 모두에게 유용한 더 좋은 툴을 만들 수도 있다고 생각한다. 따라서 독자들 역시 몇몇 콘퍼런스, 밋업 또는 메일링 리스트 등에 참여하길 희망한다.
/홀든 카로

이 책에서 다루는 내용

■ 아파치 스파크와 스파크 2.0의 구조
■ 스파크 데이터프레임을 빌드하고 스파크 SQL을 이용해 데이터프레임을 다루는 방법
■ 그래프프레임과 텐서프레임을 이용해 그래프 또는 딥러닝 관련 문제를 해결하는 방법
■ 데이터를 읽고 변형하고 이해하는 방법과 데이터를 이용해 머신 러닝 모델을 학습하는 방법
■ MLlib과 ML을 사용해 머신 러닝 모델을 빌드하는 방법
■ spark-submit 명령어를 이용해 애플리케이션을 서브밋하는 방법
■ 로컬에서 빌드된 애플리케이션을 클러스터에서 활용하는 방법

이 책의 대상 독자

이 책은 빠르게 발전하는 빅데이터 기술인 아파치 스파크를 익히고 싶은 모든 사람을 대상으로 한다. 또한 현업에서 실제 데이터 과학 업무를 맡고 있는 사람들에게도 흥미로운 내용이 될 수 있다.

이 책의 구성

1장. '스파크 이해하기'에서는 스파크를 전반적으로 소개하고 잡(job)을 다루는 개념을 설명한다.
2장. 'RDD'에서는 파이스파크에서 사용하는 스키마가 없는 데이터 구조인 RDD(Resilient Distributed Datasets)를 다룬다.
3장. '데이터프레임'에서는 효율 측면에서 스칼라와 파이썬의 격차를 줄이는 데이터 구조를 자세히 살펴본다.
4장. '데이터 모델링 준비하기'에서는 스파크 환경에서의 데이터 클리닝 혹은 전처리 방법을 제공한다.
5장. 'MLlib 소개하기'에서는 RDD로 작동하는 머신 러닝 라이브러리를 소개하고 가장 많이 사용되는 머신 러닝 라이브러리 사용법을 소개한다.
6장. 'ML 패키지 소개하기'에서는 주류 머신 러닝 라이브러리를 다루고 현재 사용 가능한 모델의 개요를 살펴본다.
7장. '그래프프레임'에서는 그래프를 이용해 쉽게 풀 수 있는 문제들에 대한 새로운 구조체를 다룬다.
8장. '텐서프레임'에서는 스파크와 딥러닝을 연결해주는 텐서프레임을 소개한다.
9장. '블레이즈를 이용한 다언어 코드 지속성'에서는 데이터 추상화를 더욱 간단히 하기 위해 스파크에서 블레이즈를 사용할 수 있는 방법을 소개한다.
10장. '구조적 스트리밍'에서는 파이스파크에서 사용 가능한 스트리밍 툴의 개요를 살펴본다.
11장. '스파크 애플리케이션 패키지화하기'에서는 작성한 코드를 모듈화하는 방법과 명령어를 통해 모듈을 스파크에서 실행시키는 방법을 다룬다.

저자/역자 소개

지은이의 말

2013년에 생산된 데이터는 약 4.4제타바이트로 추정된다. 이는 44억 테라바이트다. 2020년에는 그 10배에 달하는 데이터가 생산될 것으로 예측된다. 데이터는 매초마다 증가하고 있으며, 이런 상황에 비춰 2004년 구글의 제프리 딘과 산자 게마왓은 ‘MapReduce:Simplified Data Processing on Large Clusters’라는 세미 논문을 발표했다. 그때부터 아파치 하둡과 같이 맵리듀스를 사용하는 개념이 매우 유명해지기 시작했다. 피그 하이브 머하웃과 같은 추상 층을 포함하는 하둡 에코시스템도 개발됐다. 이 모든 것이 간단한 맵 리듀스 개념을 사용한다. 매일 수 페타바이트를 다룰 수 있음에도 불구하고, 맵리듀스는 상당히 제한적인 프레임워크다. 또한 대부분의 태스크가 디스크 읽기/쓰기를 필요로 한다. 이러한 단점을 극복하기 위해 2009년 마태 자하리아는 그의 박사 과정 중에 스파크를 개발하기 시작했으며, 2012년 처음으로 배포했다. 스파크는 기본적으로 똑같은 맵리듀스 개념을 사용하지만, 스파크만의 데이터 처리 방법과 태스크 정리 방법으로 인해 메모리 내의 연산 속도가 하둡보다 100배 가량 빨라졌다. 이 책은 파이썬을 이용한 아파치 스파크의 최신 버전을 다룬다. 이 책에서는 구조화된 데이터 혹은 구조화되지 않은 데이터를 어떻게 읽는지 알아보고, 파이스파크에서 사용 가능한 주요 데이터 타입들을 이용하는 방법, 머신 러닝 모델을 만드는 방법, 그래프를 생성하는 방법, 스트리밍 데이터를 읽는 방법, 모델을 클라우드에 적용하는 방법 등을 알아볼 것이다. 각 장은 서로 다른 문제를 다룰 것이다. 독자들이 이 책을 다 읽고 나면, 이 책에서 다루지 않은 다른 문제를 다룰 수 있는 능력을 가지게 되길 기대한다.

지은이 소개

토마스 드라바스(Tomasz Drabas)

마이크로소프트에 몸담고 있는 데이터 과학자며 현재 시애틀 근처에 거주하고 있다. 데이터 분석 또는 데이터 과학과 관련해 13년 정도의 경력을 보유했다. 고급 기술, 항공사, 통신사, 재무, 컨설팅 등 다양한 분야의 데이터를 유럽, 호주, 북미 등에서 다룬 경험이 있다. 호주에 거주하는 동안에는 항공 산업에서의 모델 선택과 수익 관리 적용에 대해 박사 논문을 준비했다. 마이크로소프트에서는 빅데이터 관련 업무를 주 업무로 하고 있으며, 스파크를 이용해 이상 행위 탐지, 고객 이탈 예측, 패턴 인식 등과 관련된 일도 하고 있다. 2016년에는 팩트출판사에서 발간한 『Practical Data Analysis Cookbook』을 저술했다.

데니 리(Denny Lee)

마이크로소프트에서 Azure 다큐먼트 DB 팀의 프로그램 매니저로 근무 중이다. 분산 시스템 인프라 구조, 데이터 플랫폼, 클라우드 환경에서의 예측 분석 시스템에 관해 18년 이상의 경력을 가진 데이터 과학자 겸 데이터 엔지니어다. 본업 외에도 여러 프로젝트에서 큰 역할을 해왔다. Azure 다큐먼트 DB 팀에 들어오기 전에는 데이터브릭스에서 기술 전도사로 활동하기도 했으며, 아파치 스파크 버전 0.5부터 사용했다. 컨커(Concur)의 데이터 과학 엔지니어링 부서에서 시니어 디렉터로 일했고, 마이크로소프트의 윈도우용 하둡과 HDInsight로 알려진 Azure 서비스를 개발한 팀에서 일하기도 했다. 오리건 생명 과학 대학교(Oregon health and Sciences University)에서 정보의학(biomedicalinformatics) 석사 학위를 받았으며, 지난 15년 동안 헬스케어 고객을 위한 강력한 데이터 솔루션을 개발하기도 했다.

옮긴이의 말

전체적인 내용이 그다지 난해하지는 않은 책으로, 파이썬과 스파크를 이용해 분석 시스템 기반을 마련하고 활용하는 단계까지 올라가고자 할 때 함께할 개념서로 적합하다. 이 책의 가장 큰 장점은 개념이나 코드 등의 설명이 상당히 명확하다는 것이다. 책의 난이도가 그리 높지 않아서 쉽게 이해되는 면도 있으나, 저자의 문장력이 상당히 명확한 편이라고 느꼈다. 다소 불필요한 설명도 일부 포함돼 있으나 그 양이 많지 않아서 전체적으로 책의 내용을 이해하는 데 큰 영향을 주지는 않는다. 이 책의 초반에서는 스파크의 동작 원리와 구성 요소 등을 설명한다. 스파크가 왜 고속 처리나 분산 처리에 유리한 구조를 갖췄는지, 속도 개선에 가장 큰 영향을 준 부분은 어느 곳인지 이해하기 쉽게 설명했다. 중반에서는 스파크 분석 라이브러리 사용법과 그 라이브러리를 이용한 실제 데이터 분석에 초점을 맞추고 있다. 실제 데이터를 분석하는 과정에서 데이터를 어떻게 클리닝 및 전처리해야 하는지 약간의 수학적, 통계적 지식을 이용해 설명하고, 그렇게 전처리된 결과를 스파크에서 지원하는 분석 라이브러리를 통해 결과를 내고, 그 결과를 데이터 분석가의 입장에서 해석하는 부분도 다룬다. 끝에서는 실시간 분석과 애플리케이션 패키지화를 살펴본다. 실시간으로 들어오는 데이터를 처리하고 테스트하는 방법과 최종적으로 만들어진 애플리케이션을 스파크 혹은 다른 방법을 통해 패키지화하는 방법을 다룬다.

옮긴이 소개

이진기

성균관대학교 컴퓨터공학부를 졸업하고 안랩에서 3년간 보안 관제 업무를 맡았다. 3년간의 근무 기간 중 데이터 분석에 큰 관심을 갖게 돼 퇴사한 후, 영국에 있는 워릭대학교(University of Warwick)에서 데이터 마이닝 석사 과정을 마쳤다. 현재는 안랩에서 보안 데이터 분석 업무를 맡고 있다.

목차

목차
  • 1장. 스파크 이해하기
  • __아파치 스파크는 무엇인가?
  • __스파크 잡과 API
  • ____실행 프로세스
  • ____RDD
  • ____데이터프레임
  • ____데이터셋
  • ____카탈리스트 옵티마이저
  • ____프로젝트 텅스텐
  • __스파크 2.0의 구조
  • ____데이터셋과 데이터프레임 통합
  • ____스파크세션에 대한 소개
  • ____텅스텐 페이스 2
  • ____구조적 스트리밍
  • ____지속적 애플리케이션
  • __요약

  • 2장. RDD
  • __RDD의 내부 작동 원리
  • __RDD 생성하기
  • ____스키마
  • ____파일로부터 데이터 읽기
  • ____람다 표현
  • __전역 범위 vs. 지역 범위
  • __트랜스포메이션
  • ____map() 트랜스포메이션
  • ____.filter() 트랜스포메이션
  • ____.flatMap(...) 트랜스포메이션
  • ____.distinct() 트랜스포메이션
  • ____.sample(...) 트랜스포메이션
  • ____.leftOuterJoin(...) 트랜스포메이션
  • ____.repartition(...) 트랜스포메이션
  • __액션
  • ____.take(...) 함수
  • ____.collect(...) 함수
  • ____.reduce(...) 함수
  • ____.count(...) 함수
  • ____.saveAsTextFile(...) 함수
  • ____.foreach(...) 함수
  • __요약

  • 3장. 데이터프레임
  • __파이썬에서의 RDD 커뮤니케이션
  • __카탈리스트 옵티마이저 리뷰
  • __데이터프레임을 이용한 파이스파크 스피드업
  • __데이터프레임 생성하기
  • ____JSON 데이터 생성하기
  • ____데이터프레임 생성하기
  • ____임시 테이블 생성하기
  • __간단한 데이터프레임 쿼리
  • ____데이터프레임 API 쿼리
  • ____SQL 쿼리
  • __RDD로 연동하기
  • ____리플렉션을 이용한 스키마 추측하기
  • ____프로그래밍하는 것처럼 스키마 명시하기
  • __데이터프레임 API로 쿼리하기
  • ____행의 개수
  • ____필터문 실행하기
  • __SQL로 쿼리하기
  • ____행의 개수
  • ____필터문을 where 절을 사용해 실행하기
  • __데이터프레임 시나리오: 비행 기록 성능
  • ____출발지 데이터셋 준비하기
  • ____비행 성능 데이터셋과 공항 데이터셋 조인하기
  • ____비행 성능 데이터 시각화하기
  • __스파크 데이터셋 API
  • __요약

  • 4장. 데이터 모델링 준비하기
  • __중복, 미관찰 값, 아웃라이어 확인하기
  • ____중복 값
  • ____관찰되지 않은 데이터
  • ____아웃라이어
  • __데이터에 친숙해지기
  • ____기술 통계
  • ____상관 계수
  • __시각화
  • ____히스토그램
  • ____피처 사이의 상호작용
  • __요약

  • 5장. MLlib 소개하기
  • __패키지에 대한 개요
  • __데이터 로딩하기와 변형하기
  • __데이터에 대해 알아보기
  • ____기술 통계
  • ____상관 계수
  • ____통계 값 테스트하기
  • __최종 데이터셋 생성하기
  • ____LabeledPoint의 RDD 생성하기
  • ____학습 데이터셋과 테스트 데이터셋으로 나누기
  • __유아 생존율 예측하기
  • ____MLlib의 로지스틱 회귀
  • ____가장 유용한 피처 선택하기
  • ____MLlib에서의 랜덤 포레스트
  • __요약

  • 6장. ML 패키지 소개하기
  • __패키지의 개요
  • ____트랜스포머
  • ____에스티메이터
  • ____분류 모델
  • ____회귀 모델
  • ____군집화 모델
  • ____파이프라인
  • __ML로 유아 생존율 예측하기
  • ____데이터 로드하기
  • ____트랜스포머 생성하기
  • ____에스티메이터 생성하기
  • ____파이프라인 생성하기
  • ____모델 학습하기
  • ____모델의 성능 측정하기
  • ____모델 저장하기
  • __파라미터 하이퍼튜닝
  • ____그리드 탐색
  • ____학습/검증 데이터셋 쪼개기
  • ____파이스파크 ML의 다른 피처 실습
  • ____피처 추출
  • __요약

  • 7장. 그래프프레임
  • __그래프프레임 소개
  • __그래프프레임 설치하기
  • ____라이브러리 생성
  • __비행 데이터셋 준비하기
  • __그래프 생성하기
  • __간단한 쿼리 수행하기
  • ____공항과 여행의 개수 확인하기
  • ____데이터셋 내에서 가장 긴 지연 확인하기
  • ____지연 비행 vs. 정각/이른 비행 확인하기
  • ____시애틀에서 출발하는 어떤 비행기에서 지연이 발생할 확률이 높은가?
  • ____시애틀에서 출발해 어떤 주로 향할 때 비행기의 지연 가능성이 높을까?
  • __노드 degree 이해하기
  • __상위 환승 공항 알아내기
  • __모티브 이해하기
  • __페이지랭크를 이용해 공항 순위 알아보기
  • __가장 인기 있는 논스톱 비행편 확인하기
  • __너비 우선 탐색 사용하기
  • __D3를 이용한 비행편 시각화
  • __요약

  • 8장. 텐서프레임
  • __딥러닝이란 무엇인가?
  • ____인공신경망과 딥러닝의 필요성
  • ____피처 엔지니어링이란?
  • ____데이터와 알고리즘 연결하기
  • __텐서플로우는 무엇인가?
  • ____pip 설치하기
  • ____텐서플로우 설치하기
  • ____상수를 이용한 행렬 곱
  • ____placeholder를 이용한 행렬 곱
  • ____논의
  • __텐서프레임 소개하기
  • __텐서프레임: 퀵 스타트
  • ____설정과 셋업
  • ____기존 칼럼에 상수를 더하기 위해 텐서플로우 사용하기
  • ____블록 단위 reduce 연산자 예제
  • __요약

  • 9장. 블레이즈를 이용한 다언어 코드 지속성
  • __블레이즈 설치하기
  • __다언어 코드 지속성
  • __데이터 추상화하기
  • ____NumPy 배열로 작업하기
  • ____pandas 데이터프레임 사용하기
  • ____파일로 작업하기
  • ____데이터베이스로 작업하기
  • __데이터 연산
  • ____칼럼 접근하기
  • ____심볼릭 트랜스포메이션
  • ____칼럼 연산자
  • ____데이터 축소
  • ____조인
  • __요약

  • 10장. 구조적 스트리밍
  • __스파크 스트리밍은 무엇인가?
  • __스파크 스트리밍이 왜 필요한가?
  • __스파크 스트리밍 애플리케이션의 데이터 흐름은 어떠한가?
  • __DStream을 이용한 간단한 스트리밍 애플리케이션
  • __스파크 스트리밍의 글로벌 집계에 대한 기본
  • __구조적 스트리밍 소개하기
  • __요약

  • 11장. 스파크 애플리케이션 패키지화하기
  • __spark-submit 명령어
  • 명령행 파라미터
  • __애플리케이션 실행시키기
  • ____SparkSession 설정하기
  • ____SparkSession 생성하기
  • ____코드 모듈화하기
  • ____잡 서브밋하기
  • ____실행 상태 모니터링하기
  • __데이터브릭스 잡
  • __요약

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안