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장. '스파크 애플리케이션 패키지화하기'에서는 작성한 코드를 모듈화하는 방법과 명령어를 통해 모듈을 스파크에서 실행시키는 방법을 다룬다.
목차
목차
- 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.61 : 4행]
[p.65 : 아래에서 4행]
.takeSampe() 함수를
->
.takeSample() 함수를