Top

[대용량 빅데이터 분석과 머신 러닝까지 활용하는]
빅데이터 분석을 위한 스칼라와 스파크

  • 원서명Scala and Spark for Big Data Analytics: Tame big data with Scala and Apache Spark! (ISBN 9781785280849)
  • 지은이레자울 카림(Rezaul Karim), 스리다 알라(Sridhar Alla)
  • 옮긴이김용환
  • ISBN : 9791161752402
  • 50,000원
  • 2018년 12월 24일 펴냄
  • 페이퍼백 | 1,092쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 데이터 과학

책 소개

소스 코드 파일은 여기에서 내려 받으실 수 있습니다.

2019년 대한민국학술원 우수학술도서 선정도서
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약

스파크를 이용해 데이터 분석 방법을 배우려는 사람에게 매우 유용한 책이다. 가장 먼저 스칼라를 소개하고, 스칼라 애플리케이션 개발에 필요한 객체지향 개념과 함수형 프로그래밍 개념을 설명한다. 스파크에 초점을 맞춰 RDD와 데이터 프레임을 사용한 기본 추상화를 다룬다.
그 다음 스파크 SQL, GraphX, 스파크 구조화 스트리밍을 사용해 구조화된 데이터와 구조화되지 않은 데이터를 분석하고 모니터링, 설정, 디버깅, 테스팅, 배포와 같은 고급 주제를 살펴본다. 또한 SparkR 및 PySpark API를 사용한 스파크 애플리케이션을 개발하는 방법, 아파치 제플린(Zeppelin)을 사용한 대화식 데이터 분석, Alluxio를 함께 사용해 인메모리 데이터를 처리하는 방법을 다룬다.
이 책을 다 살펴본 후, 스파크를 완벽하게 이해하고 풀 스택 데이터 분석을 수행할 수 있을 것이다. 이 책은 최신 2.3.2 버전을 기준으로 작성됐다. 기존의 원서에서 제공하는 코드의 오타와 호환성을 수정한 옮긴이의 github 저장소를 제공한다.

이 책에서 다루는 내용

■ 스칼라의 객체지향 개념과 함수형 프로그래밍 개념 이해
■ 스칼라 컬렉션 API 이해
■ 스파크의 핵심 추상화를 알기 위해 RDD와 데이터 프레임으로 작업하기
■ 스파크 SQL과 GraphX를 사용해 구조 데이터와 구조화되지 않은 데이터 분석
■ 스파크 구조화 스트리밍을 사용해 확장 가능하고 내결함성 있는 스트리밍 애플리케이션 개발
■ 스파크 MLlib과 스파크 ML에서 많이 사용되는 알고리즘으로 예측 모델을 구축할 수 있는 분류, 회귀 분석, 차원 감소, 추천 시스템과 같은 머신 러닝 모범 사례
■ 방대한 양의 데이터를 클러스터링하는 클러스터링 모델 구축
■ 스파크 애플리케이션 튜닝, 디버깅, 모니터링 이해
■ 실제 독립형(Standalone), 메소스(Mesos), 얀(YARN), 쿠버네티스(Kubernetes) 모드의 클러스터에 스파크 애플리케이션 배포

이 책의 대상 독자

스파크를 이용해 데이터 분석 방법을 배우려는 사람에게 매우 유용한 책이다. 스파크나 스칼라에 대한 지식은 없더라도 이전 프로그래밍 경험(특히 다른JVM 언어)이 있다면 스파크나 스칼라에 대한 개념을 이해하는 데 매우 유용하다.
스칼라는 지난 몇 년 동안 특히 데이터 과학과 분석 분야에서 꾸준히 증가하고 있다. 스파크는 스칼라로 작성됐고 분석 분야에서 널리 사용되고 있다. 이 책은 빅데이터를 잘 다룰 수 있는 스파크를 설명한다.

이 책의 구성

1장, ‘스칼라 소개’에서는 스파크의 스칼라 기반 API를 사용해 빅데이터를 분석한다. 시작점으로 스파크 내부가 스칼라로 작성됐음을 설명하고 자연스럽게 스칼라의 역사, 목적, 윈도우/리눅스/맥OS에 스칼라를 설치하는 방법과 같은 기본 내용 등 스칼라에 대해 간단히 설명한다. 그리고 스칼라 웹 프레임워크에 대해 간략히 설명한다. 그다음 자바와 스칼라를 비교 분석한다. 마지막에 스칼라를 시작하기 위해 스칼라 프로그래밍을 살펴본다.
2장, ‘객체지향 언어, 스칼라’에서는 객체지향 프로그래밍(OOP) 패러다임이 완전히 새로운 추상화 계층을 제공한다고 설명한다. 간단히 말해 OOP 언어의 가장 큰 장점인 탐색 가능성,모듈성, 확장성을 설명한다. 특히 스칼라에서 변수를 처리하는 방법을 살펴본다. 스칼라에서 변수, 메소드, 클래스, 객체뿐 아니라 패키지, 패키지 객체, 트레이트, 트레이트 선형화, 자바와의 상호 호환성 등을 다룬다.
3장, ‘함수형 프로그래밍 개념’에서는 스칼라의 함수형 프로그래밍 개념을 소개한다. 스칼라가 데이터 과학자에게 무기가 되는 이유, 스파크 패러다임/순수 함수/고차 함수를 배우는 것이 중요한 이유와 같은 몇 가지 주제를 다룬다. 고차 함수를 사용하는 실제 사용 사례도 함께 소개한다. 그다음 스칼라 표준 라이브러리를 사용해 컬렉션 외부의 고차 함수에서 예외를 처리하는 방법을 살펴본다. 마지막으로 함수형 스칼라가 객체의 가변성에 어떤 영향을 주는지 살펴본다. 4장, ‘컬렉션 API’에서는 스칼라 사용자가 가장 큰 흥미를 얻는 기능 중 하나인 컬렉션 API를 소개한다. 스칼라 컬렉션 API는 매우 강력하고 유연하며 결합된 많은 연산을 갖고 있다. 그리고 스칼라 컬렉션 API의 기능을 소개할 뿐 아니라 다양한 타입의 데이터를 수용하고 다양한 문제를 해결할 때 컬렉션 API의 사용 방법을 소개한다. 마지막으로 스칼라 컬렉션 API, 타입과 계층 구조, 성능 특성, 자바 상호운용성, 스칼라 암시를 설명한다.
5장, ‘스파크로 빅데이터 다루기’에서는 데이터 분석과 빅데이터에 대해 설명한다. 빅데이터에서 제기되는 도전 과제, 분산 컴퓨팅 처리 방법, 함수형 프로그래밍 접근 방식을 살펴본다. 구글의 맵리듀스, 아파치 하둡, 아파치 스파크를 소개하고, 해당 오픈소스의 접근 방법과 기술의 사용 방법을 살펴본다. 아파치 스파크가 처음 만들어졌던 이유와 빅데이터 분석 및 처리 시 부딪혔던 도전 과제 등 아파치 스파크의 진화 과정을 살펴본다.
6장, ‘스파크로 REPL과 RDD로 작업’에서는 스파크 작동 방법을 다룬다. 그다음 아파치 스파크의 기본 추상화인 RDD를 소개하고 단순히 스칼라와 유사한 API를 제공하는 분산 컬렉션인지 확인한다. 아파치 스파크의 배포 옵션을 살펴보고 스파크 셸을 사용해 로컬에서 실행한다. 아파치 스파크의 내부 구조, RDD의 개념, DAG, RDD 계보, 트랜스포메이션, 액션을 다룬다.
7장, ‘특수 RDD 연산’에서는 다양한 요구 사항을 RDD가 어떻게 충족시키는지, 어떻게 RDD가 새로운 기능(위험성도 갖고 있다)을 제공하는지에 대해 중점적으로 다룬다. 또한 브로드캐스트 변수와 스파크에서 제공하는 누산기와 같은 유용한 객체를 살펴본다. 마지막으로 셔플링과 집계를 다룬다.
8장, ‘스파크 SQL’에서는 RDD의 하이레벨 추상화인 스파크 SQL로 구조화된 데이터를 분석하는 방법과 스파크 SQL API로 구조화된 데이터를 간단하면서도 견고하게 쿼리하는 방법을 소개한다. 또한 데이터셋을 소개하고 데이터셋, 데이터 프레임, RDD 간의 차이점을 살펴본다. 마지막으로 데이터 프레임 API를 사용해 복잡한 데이터 분석을 수행할 수 있는 조인 연산과 윈도우 함수를 살펴본다.
9장, ‘스파크 스트리밍’에서는 스파크 스트리밍을 소개하고, 스파크 API를 사용해 데이터 스트림을 스파크 스트리밍으로 처리하는 방법을 설명한다. 또한 트위터에 글을 트윗하고 처리하는 실제 사례를 사용해서 실시간 데이터 스트림을 처리하는 다양한 방법을 다룬다. 실시간 처리를 위해 아파치 카프카와 통합하는 방법도 살펴본다. 마지막으로 애플리케이션에서 실시간 쿼리를 제공할 수 있는 구조화 스트리밍을 살펴본다.
10장, ‘GraphX’에서는 그래프를 사용해 얼마나 많은 실제 문제를 모델링하고 해결할 수 있는지 살펴본다. 페이스북을 예로 들어 그래프 이론, 스파크의 그래프 처리 라이브러리 GraphX, VertexRDD와 EdgeRDD, 그래프 연산자, aggregateMessages, triangleCount, Pregel API, 페이지랭크 알고리즘과 같은 사용 사례를 살펴본다.
11장, ‘머신 러닝 학습: 스파크 MLlib과 ML’에서는 통계 머신 러닝에 대한 개념적인 소개를 제공한다. 스파크의 머신 러닝 API인 스파크 MLlib과 스파크 ML을 집중적으로 다룬다. 디시전 트리(decision tree)와 랜덤 포레스트 알고리즘(random forest algorithm)을 이용한 분류 작업을 해결하는 방법과 선형 회귀 알고리즘을 이용한 회귀 문제를 해결한다.
또한 분류 모델을 훈련하기 전에 피처 추출에서 원핫(one-hot) 인코딩과 차원 축소 알고리즘을 사용함으로써 얻을 수 있는 이점을 보여준다. 그다음에는 협업 필터링 기반 영화 추천 시스템을 개발하는 단계별 예제를 보여준다.
12장, ‘고급 러닝 머신 모범 사례’에서는 스파크를 사용한 머신 러닝 고급 주제에 대한 이론과 실용적인 측면을 살펴본다. 그리드 검색, 교차 검증, 하이퍼파라미터 튜닝을 사용해 성능을 최적화하는 머신 러닝 모델 튜닝 방법을 배운다. 그리고 모델 기반의 추천 알고리즘 중인 하나인 ALS를 사용해 확장 가능한 추천 시스템 개발 방법을 다룬다. 마지막으로 주제 모델링 애플리케이션은 텍스트 클러스터링 기법을 활용한다.
13장, ‘나이브 베이즈’에서는 빅데이터 분야의 머신 러닝이 학계와 산업계 모두의 연구 분야에 큰 영향을 미친 급진적인 결합이라고 말한다. 빅데이터는 실제 가치를 찾기 위해 ML, 데이터 분석 툴, 알고리즘에 어려운 과제를 부과한다. 그러나 거대한 데이터셋을 기반으로 미래를 예측하는 것은 결코 쉬운 일이 아니다. 미래 예측과 관련해 ML을 자세히 살펴보고, 간단하지만 강력한 방법으로 다항 분류, 베이지안 추론, 나이브 베이즈, 디시전 트리, 나이브 베이즈와 디시전 트리의 비교 분석 등 확장 가능한 분류 모델과 개념을 구축하는 방법을 알아본다.
14장, ‘스파크 MLlib으로 데이터 클러스터링’에서는 스파크의 기본 아키텍처 기반으로 스파크가 클러스터 모드에서 어떻게 동작하는지 설명한다. 이전 여러 장에서 다양한 스파크 API를 사용해 실제 애플리케이션의 개발 방법을 살펴봤다면 14장에서는 클러스터에 전체 스파크 애플리케이션을 배포하는 방법뿐 아니라 기존 하둡을 설치했는지 또는 설치하지 않았는지 확인한다.
15장, ‘스파크 ML을 이용한 텍스트 분석’에서는 스파크 ML을 사용해 텍스트 분석을 설명한다. 텍스트 분석은 머신 러닝의 넓은 분야며, 정서 분석, 채팅 봇, 이메일 스팸 탐지, 자연어 처리 등과 같은 많은 사용 사례에서 유용하다. 10,000개의 트위터 샘플 데이터셋을 텍스트 분류 사용 사례에 중점을 둔 텍스트 분석에 스파크를 사용하는 방법을 살펴본다. 또한 실제 텍스트를 잘 모르는 상태에서 문서에서 주제를 생성하는 인기 있는 기술인 LDA를 살펴보고, LDA가 잘 동작하는지 트위터 데이터를 기반으로 텍스트 분류를 구현한다.
16장, ‘스파크 튜닝’에서는 스파크 내부를 깊이 있게 살펴본다. 그리고 스파크를 사용하는 것이 스칼라 컬렉션을 사용하는 것처럼 느껴지지만 실제 스파크가 분산 시스템에서 실행된다는 것을 잊지 말아야 한다. 또한 스파크 잡 모니터링, 스파크 설정, 스파크 애플리케이션 개발 시 발생하는 일반적인 실수, 최적화 기술에 대해 설명한다.
17장, ‘클러스터에 스파크 배포’에서는 스파크가 기본 아키텍처를 기반으로 클러스터 모드에서 어떻게 동작하는지 살펴본다. 클러스터에서 스파크 아키텍처, 스파크 생태계, 클러스터 관리를 살펴보고 독립형, 메소스(Mesos), 얀(Yarn), 쿠버네티스(kubernetes)에 스파크 애플리케이션을 배포하는 방법을 살펴본다. 마지막으로 클라우드 기반 AWS 클러스터에 스파크 애플리케이션을 배포하는 방법도 살펴본다.
18장, ‘스파크 테스팅과 디버깅’에서는 분산 배포된 애플리케이션의 테스팅에 대한 어려움을 설명하고, 테스팅을 해결할 방법을 살펴본다. 분산 환경에서 테스팅을 수행하는 방법과 스파크 애플리케이션을 테스팅하고 디버깅하는 방법을 다룬다.
19장, ‘PySpark과 SparkR’에서는 파이썬과 R을 사용해 스파크 코드를 작성하는 데 사용되는 두 API, 즉 PySpark와 SparkR을 설명한다. 먼저 PySpark를 시작하는 방법을 설명한 후 PySpark로 데이터 프레임 API와 UDF에 상호작용하는 방법을 설명한다.
그리고 PySpark를 사용해 데이터 분석을 수행한다. 그다음에 SparkR을 시작하는 방법을 설명한다. 또한 데이터 처리과 조작 방법, SparkR을 사용한 RDD와 데이터 프레임을 사용하는 방법, 마지막으로 SparkR을 사용하는 일부 데이터 시각화 방법을 살펴본다.
부록 A, ‘Alluxio로 스파크의 처리 성능 높이기’에서는 Alluxio를 스파크와 함께 사용해 처리 속도를 향상시키는 방법을 보여준다. Alluxio는 스파크를 포함한 여러 플랫폼에서 많은 애플리케이션의 속도를 높여주는 오픈소스 분산 메모리 저장 시스템이다.
Alluxio의 가능성을 살펴보고 Alluxio을 스파크와 통합해 스파크 잡을 실행할 때마다 메모리에 데이터를 캐시할 필요 없이 더 좋은 성능을 보여주는 부분을 보여준다.
부록 B, ‘아파치 제플린에서 대화형 데이터 분석’에서는 데이터 과학 관점에서 데이터 분석의 대화형, 시각적 효과가 중요함을 설명한다. 제플린은 여러 백엔드와 인터프리터가 있는 대화형, 대규모 데이터 분석을 위한 웹 기반 노트북이다. 그리고 백엔드에서 인터프리터로 스파크를 사용해 대규모 데이터를 분석할 수 있게 아파치 제플린을 사용하는 방법을 설명한다.

저자/역자 소개

지은이의 말

데이터가 지속적으로 증가하면서 데이터를 기반으로 점점 더 복잡한 결정을 내릴 필요성이 생겼다. 또한 빅데이터는 큰 장애물을 생성하고, 기업은 기존 분석 방법을 사용해 적시에 통찰력을 얻지 못하고 있다. 빅데이터 영역은 분석 프레임워크와 많은 관련이 있고, 분석 프레임워크의 범위는 해당 프레임워크가 처리할 수 있는 것에 따라 정의된다. 수백만 방문자의 클릭 스트림에서 온라인 광고 게재 위치를 최적화하기 위해 면밀히 조사하거나, 사기 신호를 식별하기 위해 수십억 건의 거래를 분석하거나, 머신 러닝과 그래프 처리 같은 고급 분석의 필요가 있든지 간에 엄청난 데이터 용량으로부터 자동으로 통찰력을 얻는 방법이 더 분명해지고 있다.
모든 학계와 산업 분야에서 빅데이터 처리, 분석, 데이터 과학 분야의 사실상 표준인 아파치 스파크는 머신 러닝과 그래프 처리 라이브러리를 제공하고 있고, 기업에서 확장성이 뛰어난 클러스터링 컴퓨터 파워로 복잡한 문제를 쉽게 해결할 수 있다. 스파크는 스칼라를 사용해 분산된 프로그램을 작성하는 것을 스파크를 사용한 일반 프로그램을 작성하는 것처럼 느껴지게 한다. 스파크는 ETL 파이프라인에 성능을 크게 향상시키고 맵리듀스 프로그래머가 매일 하둡 프로그래밍을 하다 직면하는 어려움을 경감시킨다.
이 책에서는 스파크와 스칼라를 사용해 머신 러닝, 그래프 처리, 스트리밍, SQL을 스파크에 전달하는 기능을 사용해 최첨단 고급 데이터 분석을 수행하고 MLlib, ML, SQL, GraphX, 기타 라이브러리를 사용한다.
먼저 스칼라로 시작한 후, 스칼라를 살펴본다. 마지막으로 스파크와 스칼라로 빅데이터 분석하는 고급 주제를 다룬다. 부록에서는 SparkR, PySpark, 아파치 제플린, 인메모리 Alluxio에 대한 스칼라 지식을 확장하는 방법을 설명한다. 이 책은 처음부터 끝까지 읽을 필요가 없다. 얻고 싶은 지식이나 관심이 있는 장으로 건너뛰면 된다.
즐겁게 책을 읽기 바란다!

지은이 소개

레자울 카림(Rezaul Karim)

독일 프라운호퍼(Fraunhofer)의 FIT 연구 과학자다. 독일 아헨(Aachen)의 RWTH 아헨공과대학교에서 박사 학위를 받았다. 컴퓨터 과학 학사, 석사 학위도 취득했다.
프라운호퍼 FIT에 입사하기 전에 아일랜드의 Insight Center (아일랜드 최대 규모의 데이터 분석 센터이자 세계 최대의 시맨틱 웹 연구소)의 연구원으로 일하면서 데이터 분석 업무를 맡았다. 그 전에는 한국, 인도, 베트남, 터키, 방글라데시에 위치한 삼성전자의 R&D 센터에서 리드 엔지니어, 한국의 경희대학교 데이터베이스 연구소에서 연구 조교로 일했다. 또한 방글라데시 다카의 i2SoftTechnology에서 소프트웨어 엔지니어, 비엠테크21 월드와이드(BMTech21Worldwide)에서 R&D 엔지니어로도 근무했다.
빅데이터 기술(스파크, 카프카, DC/OS, 도커, 메소스(Mesos), 제플린(Zeppelin), 하둡, 맵리듀스(MapReduce))과 딥러닝(텐서플로, DeepLearning4j, H2O-Sparking Water) 중심의 C/C++, 자바, 스칼라, R, 파이썬 알고리즘과 데이터 구조에 대한 확실한 지식을 바탕으로 연구 개발 분야에서 8년 이상의 경력을 쌓았다. 연구 관심사는 머신 러닝, 딥러닝, 시맨틱 웹, 링크 데이터, 빅데이터, 바이오 인포믹스 등이다. 팩트출판사에서 출간한 『대용량 머신 러닝과 스파크』(에이콘, 2018)와 『텐서플로로 구현하는 딥러닝과 강화학습』(에이콘, 2017)의 저자다.

스리다 알라(Sridhar Alla)

중소기업과 대기업이 데이터웨어 하우징, 거버넌스, 보안, 실시간 처리, 초단타 매매, 대규모 데이터 과학 프랙티스 구축 같은 복잡한 문제를 해결할 수 있도록 지원하는 빅데이터 전문가다. 애자일 전문가이자 인증된 애자일 데브옵스 실행가다. 써니밸(Sunnyvale)의 Network Appliance에서 스토리지 소프트웨어 엔지니어로 경력을 쌓은 후, 사이버 보안 회사인 보스턴의 eIQNetworks에서 최고 기술 책임자(CIO)로 근무했다. 미국 필라델피아에 위치한 컴캐스트(Comcast)에서 데이터 과학 및 공학 담당 이사로 재직했다. 스트라타(Strata), 하둡 월드(Hadoop World), 스파크 서밋(Spark Summit), 기타 콘퍼런스에서 열정을 갖고 있는 발표자다. 또한 현장과 온라인에서 여러 기술에 대한 교육을 한다. 대규모 컴퓨팅 및 분산 시스템과 관련된 US PTO에 여러 특허를 출원했다. 인도 하이데라바드 JNTU에서 컴퓨터 과학 학사 학위를 받았으며, 현재 뉴저지에서 아내와 함께 살고 있다.
18년 동안 스칼라, 자바, C/C++, 파이썬, R, Go에서 코드 작성 경험을 쌓았다. 또한 스파크, 하둡, 카산드라(Cassandra), HBase, 몽고DB, 리악(Riak), 레디스(Redis), 제플린, 메소스(Mesos), 도커, 카프카, 일래스틱서치, 솔라, H2O, 머신 러닝, 텍스트 분석, 분산 컴퓨팅, 고성능 컴퓨팅에 대한 폭 넓은 지식을 보유하고 있다.

옮긴이의 말

하둡 맵리듀스(Hadoop MapReduce) 프로그래밍은 최근 몇 년 동안 잘 사용되고 있습니다. 또한 데이터가 저장된 하둡 분산 파일 시스템을 기반으로 하는 분석, 추천 프로그래밍은 하둡 내부에서만 가능했기에 개발자들이 하둡 인터페이스를 사용해 개발해야 했습니다. 그러나 일반 개발자가 이해하기 어려운 개념과 인터페이스가 있어 하둡과 하둡 맵리듀스를 잘 이해하는 개발자가 전문적으로 개발하곤 했습니다. 일반 개발자들이 쉽게 분석할 수 있도록 아파치 하이브(Hive) 등 다양한 하둡 관련 프레임워크가 사용되기 시작했습니다. 그러나 여전히 유연하지 않을 뿐 더러 하둡 맵리듀스 개발은 변화되지 않았고, 테스트 코드 개발 역시 쉽지 않았습니다. 하둡 프로그래밍의 약점은 대용량 데이터에 대한 실시간 처리입니다. 따라서 하둡 대신 실시간 데이터를 처리하는 메시징 큐(예, 카프카)를 사용하고 있습니다. 그러다 보니 스트리밍 처리를 처리하기 위해 아파치 스톰(Apache Storm), 스파크 스트리밍(Spark Streaming), 아파치 플링크(Apache Flink) 등 많은 오픈 소스가 쓰이고 있습니다.
저는 현업 개발자이지만 다양한 NoSQL, 대용량, 비즈니스에 관심이 많습니다. 저는 스칼라/스파크를 사용해 애플리케이션을 개발했고, 메소스/마라톤 및 쿠버네티스에서 애플리케이션에서도 애플리케이션을 개발했습니다. 따라서 하둡 맵리듀스 프로그래밍은 스파크로 대체될 것이라는 굳은 믿음이 있습니다. 누구나 스칼라를 제대로 알 수 있다면 하둡 맵리듀스 프로그래밍을 스칼라 기반의 스파크 프로그래밍으로 대체 및 보완할 수 있을 것이라 확신합니다. 저뿐 아니라 많은 개발자가 하둡 맵리듀스 프로그래밍, 기존 파이프라인 프로그래밍 및 머신 러닝 프로그래밍을 점차 스파크 프로그래밍으로 대체되고 보완하고 있습니다. 스트리밍 처리, 대용량 분석 처리, 추천 시스템 개발, 인메모리 병렬처리, 머신 러닝까지 여러 분야의 애플리케이션을 스파크 하나만 알면 어느 정도 진행할 수 있습니다. 따라서 람다 아키텍처를 스파크로 쉽게 처리할 수 있습니다. 스파크는 CNN과 같은 딥러닝을 지원하지 않지만 텐서플로(Tensorflow)와 쉽게 연동할 수 있습니다. 그리고 스파크는 자바, 스칼라, 파이썬, R 언어를 지원하기 때문에 언어에 대한 부담이 가장 덜합니다.
특히 스칼라의 함수형 언어의 특징과 데이터프레임을 추상화한 스칼라 기반의 스파크를 활용함으로써 빅데이터를 논리적인 프로그래밍으로 쉽게 처리할 수 있습니다. 많은 개발자가 스스로 공부하며 빅데이터, 머신 러닝의 영역으로 진입하고 있는데 그에 함께 가고 싶습니다.
이 책은 전반적으로 설명이 많고 그림이 풍부합니다. 특히, 집계 부분은 중요한 내용을 잘 설명하고 있습니다. 저는 이전부터 통계와 머신 러닝을 공부하고 있었는데 실제 스파크 애플리케이션에서 어떻게 연동되는지는 이 책을 통해 잘 이해하게 됐습니다. 머신 러닝을 처음 도전하시는 분에게는 이 책이 좀 어렵다고 느낄 수 있겠지만 많은 도움이 될 것입니다. 빅데이터 분석과 머신 러닝에 대한 많은 내용을 포함한 ‘전과' 같은 이 책이 여러분들에게도 현업에서 큰 도움이 되면 좋겠습니다.
이 책은 원서와 달리 최신 2.3.2 버전으로 작성됐습니다. 기존의 원서에서 제공하는 코드의 오타와 호환성을 수정해 옮긴이의 github 저장소(https://github.com/knight76/Scala-and-Spark-for-Big-Data-Analytics)를 제공하고 있으니, 참고하시기 바랍니다.

옮긴이 소개

김용환

알티캐스트, 네이버, 라인, SK Planet을 거쳐, 현재 카카오에서 개발자로 일하고 있다. 이제 마흔 네 살의 평범한 개발자로 다양한 도전에서 에너지를 얻으며, 개발과 실무 경험을 블로그(http://knight76.tistory.com)에 기록하고 있다.
정보통신산업진흥원(NIPA) 산하의 소프트웨어공학포털에 개발 관련 내용을 공유했고, 여러 콘퍼런스/세미나에서 그동안 쌓은 개발 지식을 발표하고 있다. 나 자신은 물론, 누군가에게 도움이 될 수 있다는 생각으로 번역을 시작했는데, 어느덧 13번째 책이다.

목차

목차
  • 1장. 스칼라 소개
    • 스칼라의 역사와 목적
    • 플랫폼과 편집기
    • 스칼라 설치와 설정
      • 자바 설치
      • 윈도우
      • 맥 OS
    • 스칼라: 확장 가능한 언어
      • 스칼라는 객체지향
      • 스칼라는 함수형
      • 스칼라는 정적 타입 지원
      • 스칼라는 JVM에서 동작
      • 스칼라는 자바 코드를 실행 가능
      • 스칼라는 동시 및 동기화 처리 수행 가능
    • 자바 프로그래머를 위한 스칼라
      • 모든 타입은 객체
      • 타입 추론
      • 스칼라 REPL
      • 중첩 함수
      • import문
      • 연산자를 메소드로 사용
      • 메소드와 파라미터 목록
      • 메소드 안의 메소드
      • 스칼라 생성자
      • 정적 메소드 대신 객체
      • 트레이트
    • 초보자를 위한 스칼라
      • 처음 작성하는 스칼라 코드
      • 대화형으로 스칼라 실행
      • 컴파일
    • 요약

  • 2장. 객체지향 언어, 스칼라
    • 스칼라 변수
      • 참조와 값 불변성
      • 스칼라의 데이터 타입
    • 스칼라의 메소드, 클래스, 객체
      • 스칼라의 메소드
      • 스칼라의 클래스
      • 스칼라의 객체
    • 패키지와 패키지 객체
    • 자바 상호운용성
    • 패턴 매칭
    • 스칼라의 암시
    • 스칼라의 제네릭
      • 제네릭 클래스의 정의
    • SBT와 기타 빌드 시스템
      • SBT로 빌드
      • 이클립스에 메이븐 사용
      • 이클립스에서 그래들 사용
    • 요약

  • 3장. 함수형 프로그래밍 개념
    • 함수형 프로그래밍 소개
      • 함수형 프로그래밍의 장점
    • 데이터 과학자를 위한 함수형 스칼라
    • 스파크를 공부하는 데 와 FP 스칼라를 설명하는 이유
      • 스파크인 이유
      • 스칼라와 스파크 프로그래밍 모델
      • 스칼라와 스파크 생태계
    • 순수 함수와 고차 함수
      • 순수 함수
      • 익명 함수
      • 고차 함수
      • 함수를 리턴 값으로 사용
    • 고차 함수 사용
    • 함수형 스칼라의 에러 핸들링
      • 스칼라의 실패와 예외
      • 예외 던지기
      • try와 catch를 사용한 예외 처리
      • finally
      • Either 생성
      • Future
      • 하나의 태스크를 실행하고 대기
    • 함수형 프로그래밍과 데이터 가변성
    • 요약

  • 4장. 컬렉션 API
    • 스칼라 컬렉션 API
    • 타입과 계층
      • Traversable
      • Iterable
      • Seq, LinearSeq, IndexedSeq
      • 가변과 불변
      • 배열
      • 리스트
      • 튜플
      • Option
      • exists
      • forall
      • filter
      • map
      • take
      • groupBy
      • init
      • drop
      • takeWhile
      • dropWhile
      • flatMap
    • 성능 특징
      • 컬렉션 객체의 성능 특징
      • 컬렉션 객체가 사용하는 메모리 사용량
    • 자바 상호 운영성
    • 스칼라 암시 사용
      • 스칼라의 암시적 변환
    • 요약

  • 5장. 스파크로 빅데이터 다루기
    • 데이터 분석 소개
      • 데이터 분석 프로세스 내부
    • 빅데이터 소개
      • 빅데이터의 4V
    • 하둡을 이용한 분산 컴퓨팅
      • 하둡 분산 파일 시스템(HDFS)
      • 맵리듀스 프레임워크
    • 아파치 스파크
      • 스파크 코어
      • 스파크 SQL
      • 스파크 스트리밍
      • 스파크 GraphX
      • 스파크 ML
      • PySpark
      • SparkR
    • 요약

  • 6장. 스파크로 REPL과 RDD 작업
    • 스파크에 대해 깊이 살펴보기
    • 아파치 스파크 설치
      • 스파크 독립형
      • 얀 기반의 스파크
      • 메소스 기반의 스파크
      • 쿠버네티스 기반 스파크
    • RDD 소개
      • RDD 생성
    • 스파크 셸의 사용
    • 트랜스포메이션과 액션
      • 트랜스포메이션
      • 액션
    • 캐싱
    • 데이터 로드와 저장
      • 데이터 로드
      • RDD 저장
    • 요약

  • 7장. 특수 RDD 연산
    • RDD 타입
      • 쌍 RDD
      • DoubleRDD
      • SequenceFileRDD
      • CoGroupedRDD
      • ShuffledRDD
      • UnionRDD
      • HadoopRDD
      • NewHadoopRDD
    • 집계
      • groupByKey
      • reduceByKey
      • aggregateByKey
      • combineByKey
      • groupByKey, reduceByKey, combineByKey, aggregateByKey의 비교
    • 파티셔닝과 셔플링
      • 파티셔너
      • 셔플링
    • 브로드캐스트 변수
      • 브로드캐스트 변수 생성
      • 브로드캐스트 변수 정리
      • 브로드캐스트 정리
    • 누산기
    • 요약

  • 8장. 스파크 SQL
    • 스파크 SQL과 데이터 프레임
    • 데이터 프레임 API와 SQL API
      • 피벗
      • 필터
      • 사용자 정의 함수(UDF)
      • 데이터의 스키마 구조
      • 데이터셋 로드와 저장
    • 집계
      • 집계 함수
      • groupBy
      • rollup
      • cube
      • 윈도우 함수
    • 조인
      • 조인의 내부 동작
      • 브로드캐스트 조인
      • 조인 타입
      • 조인의 성능 결과
    • 요약

  • 9장. 스파크 스트리밍
    • 스트리밍에 대한 간략한 소개
      • 최소 한 번 처리 방식
      • 최대 한 번 처리 방식
      • 정확히 한 번 처리
    • 스파크 스트리밍
      • StreamingContext
      • 입력 스트림
      • binaryRecordsStream
      • queueStream
      • textFileStream 예
      • twitterStream 예
    • 불연속 스트림
      • 트랜스포메이션
      • 윈도우 연산
    • 상태 저장/상태 비저장 트랜스포메이션
      • 상태 비저장 트랜스포메이션
      • 상태 저장 트랜스포메이션
    • 체크 포인팅
      • 메타데이터 체크 포인팅
      • 데이터 체크포인팅
      • 드라이버 실패 복구
    • 스트리밍 플랫폼과의 상호운용성(아파치 카프카)
      • 수신기 기반의 접근 방식
      • 다이렉트 스트림
      • 구조화 스트리밍
    • 구조화 스트리밍
      • 이벤트 시간과 지연 데이터 처리
      • 내결함성 의미 체계
    • 요약

  • 10장. GraphX
    • 그래프 이론에 대한 간략한 소개
    • GraphX
    • VertexRDD와 EdgeRDD
      • VertexRDD
      • EdgeRDD
    • 그래프 연산자
      • filter
      • mapValues
      • aggregateMessages
      • triangleCount
    • Pregel API
      • 연결된 컴포넌트
      • 여행하는 세일즈맨 문제
      • ShortestPaths
    • 페이지랭크
    • 요약

  • 11장. 머신 러닝 학습: 스파크 MLlib와 ML
    • 머신 러닝 소개
      • 일반적인 머신 러닝 워크플로우
      • 머신 러닝 작업
    • 스파크 머신 러닝 API
      • 스파크 머신 러닝 라이브러리
    • 피처 추출과 트랜스포메이션
      • CountVectorizer
      • 토큰화
      • StopWordsRemover
      • StringIndexer
      • OneHotEncoder
      • 스파크 ML 파이프라인
    • 간단한 파이프라인 생성
    • 비지도 머신 러닝
      • 차원 축소
      • PCA
    • 이진 및 다중 클래스 분류
      • 성능 메트릭
      • 로지스틱 회귀 분석을 이용한 다중 클래스 분류
      • 랜덤 포레스트를 사용해 분류 정확도 향상
    • 요약

  • 12장. 고급 머신 러닝 모범 사례
    • 머신 러닝 모범 사례
      • 오버피팅과 언더피팅에 주의
      • 스파크 MLlib과 ML에 집중
      • 애플리케이션에 적합한 알고리즘 선택
      • 알고리즘을 선택할 때 고려해야 할 사항
      • 알고리즘을 선택할 때 데이터를 검사
    • ML 모델의 하이퍼파라미터 튜닝
      • 하이퍼파라미터 튜닝
      • 그리드 검색 파라미터 튜닝
      • 교차 검증
      • 신용 위험 분석: 하이퍼파라미터 튜닝 예
    • 스파크를 사용한 추천 시스템
      • 스파크를 이용한 모델 기반 추천
    • 주제 모델링: 텍스트 클러스터링에서 모범 사례
      • LDA 동작 방법
      • 스파크 MLlib를 이용한 주제 모델링
    • 요약

도서 오류 신고

도서 오류 신고

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

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

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