빅데이터 분석을 위한 스파크 2 프로그래밍 [개정판]

대용량 데이터 처리부터 머신러닝까지

스파크를 처음 접하는 입문자를 위한 안내서!

하둡으로 대표되던 빅데이터 처리 기술은 빅데이터와 머신러닝, 딥러닝의 붐을 타고 믿을 수 없을 만큼 빠른 속도로 발전해가고 있습니다. 작년 봄 이 책의 초판이 출시되던 해에 스파크는 이미 최고의 데이터 처리 플랫폼 중 하나로 인정받고 있었습니다. 하지만 더 이상 큰 폭의 개편은 없을 것만 같았던 스파크는 그 후로도 더욱 주목할 만한 변화를 거듭하면서 불과 1년이 지난 지금 더욱더 새로워진 API와 고도화된 성능을 갖춘 최적의 데이터 처리 플랫폼으로 변화를 거듭하고 있습니다.

이 책은 스파크를 처음 접하는 개발자들이 빠른 시간 내에 스파크가 무엇이고 어디에 어떻게 활용할 수 있는지 실무에 필요한 감을 잡을 수 있도록 스파크의 전체 모듈에 대한 설명과 예제를 담고 있습니다. 특히 스파크를 써 보고 싶지만 새로운 언어를 배우는 데 따르는 부담 때문에 망설이던 개발자들을 위해 스칼라, 자바, 파이썬 예제를 수록했습니다.

이 책을 통해 스파크에 대한 기초를 다지고 나면 각자의 영역에서 스파크가 제공하는 풍부한 기능들을 더 깊이 있고 자유롭게 활용할 수 있게 될 것입니다.

백성민

어쩌다 시작한 개발이 천직이 되어 버린 행복한 개발자. 좋아하고 즐기는 일을 직업으로 가질 수 있음에 더없이 감사한 마음으로 살고 있다. 2001년 이후 줄곧 실무 개발자로 일하고 있으며 지금은 한 포털 회사에서 광고 데이터 분석 업무를 수행하고 있다. 올해는 책만 사서 쌓아두는 일을 그만하고 그동안 모아둔 책들을 한 권이라도 더 읽어봐야겠다는 다짐을 벌써 수년째 하고 있는 중이다. 번역서로 《거침없이 배우는 자바 파워 툴》(지앤선, 2011)이 있다.

  • ▣ 01장: 스파크 소개
    • 1.1 스파크
      • 1.1.1 빅데이터의 등장
      • 1.1.2 빅데이터의 정의
      • 1.1.3 빅데이터 솔루션
      • 1.1.4 스파크
      • 1.1.5 RDD(Resilient Distributed Dataset) 소개와 연산
      • 1.1.6 DAG
      • 1.1.7 람다 아키텍처
    • 1.2 스파크 설치
      • 1.2.1 스파크 실행 모드의 이해
      • 1.2.2 사전 준비
      • 1.2.3 스파크 설치
      • 1.2.4 예제 실행
      • 1.2.5 스파크 셸
      • 1.2.6 실행 옵션
      • 1.2.7 더 살펴보기
    • 1.3 개발 환경 구축
      • 1.3.1 로컬 개발 환경 구축
    • 1.4 예제 프로젝트 설정
      • 1.4.1 WordCount 예제 실행
    • 1.5 데이터프레임과 데이터셋
    • 1.6 정리
    •  
  • ▣ 02장: RDD
    • 2.1 RDD
      • 2.1.1 들어가기에 앞서
      • 2.1.2 스파크컨텍스트 생성
      • 2.1.3 RDD 생성
      • 2.1.4 RDD 기본 액션
      • 2.1.5 RDD 트랜스포메이션
      • 2.1.6 RDD 액션
      • 2.1.7 RDD 데이터 불러오기와 저장하기
      • 2.1.8 클러스터 환경에서의 공유 변수
    • 2.2 정리
    •  
  • ▣ 03장: 클러스터 환경
    • 3.1 클러스터 환경
      • 3.1.1 클러스터 모드와 컴포넌트
      • 3.1.2 클러스터 모드를 위한 시스템 구성
      • 3.1.3 드라이버 프로그램과 디플로이 모드
    • 3.2 클러스터 매니저
      • 3.2.1 스탠드얼론 클러스터 매니저
      • 3.2.2 아파치 메소스
      • 3.2.3 얀
      • 3.2.4 히스토리 서버와 매트릭스
      • 3.2.5 쿠버네티스(Kubenetes)
    • 3.3 정리
    •  
  • ▣ 04장: 스파크 설정
    • 4.1 스파크 프로퍼티
    • 4.2 환경변수
    • 4.3 로깅 설정
    • 4.4 스케줄링
      • 4.4.1 애플리케이션 간의 자원 스케줄링
      • 4.4.2 단일 애플리케이션 내부에서의 자원 스케줄링
    • 4.5 정리
    •  
  • ▣ 05장: 스파크 SQL
    • 5.1 데이터셋
    • 5.2 연산의 종류와 주요 API
    • 5.3 코드 작성 절차 및 단어 수 세기 예제
    • 5.4 스파크세션
    • 5.5 데이터프레임, 로우, 칼럼
      • 5.5.1 데이터프레임 생성
      • 5.5.2 주요 연산 및 사용법
    • 5.6 데이터셋
      • 5.6.1 데이터셋 생성
      • 5.6.2 타입 트랜스포메이션 연산
    • 5.7 하이브 연동
    • 5.8 분산 SQL 엔진
    • 5.9 Spark SQL CLI
    • 5.10 쿼리플랜(Query Plan)과 디버깅
      • 5.10.1 스파크세션(SparkSession)과 세션스테이트(SessionState), 스파크컨텍스트(SparkContext)
      • 5.10.2 QueryExecution
      • 5.10.3 LogicalPlan과 SparkPlan
    • 5.11 정리
    •  
  • ▣ 06장: 스파크 스트리밍
    • 6.1 개요 및 주요 용어
    • 6.1.1 스트리밍컨텍스트
      • 6.1.2 DStream(Discretized Streams)
    • 6.2 데이터 읽기
      • 6.2.1 소켓
      • 6.2.2 파일
      • 6.2.3 RDD 큐(Queue of RDD)
      • 6.2.4 카프카
    • 6.3 데이터 다루기(기본 연산)
      • 6.3.1 print()
      • 6.3.2 map(func)
      • 6.3.3 flatMap(func)
      • 6.3.4 count(), countByValue()
      • 6.3.5 reduce(func), reduceByKey(func)
      • 6.3.6 filter(func)
      • 6.3.7 union()
      • 6.3.8 join()
    • 6.4 데이터 다루기(고급 연산)
      • 6.4.1 transform(func)
      • 6.4.2 updateStateByKey()
      • 6.4.3 윈도우 연산
      • 6.4.4 window(windowLength, slideInterval)
      • 6.4.5 countByWindow(windowLength, slideInterval)
      • 6.4.6 reduceByWindow(func, windowLength, slideInterval)
      • 6.4.7 reduceByKeyAndWindow(func, invFunc, windowLength, slideInterval, [numTasks])
      • 6.4.8 countByValueAndWindow(windowLength, slideInterval, [numTasks])
    • 6.5 데이터의 저장
      • 6.5.1 saveAsTextFiles(), saveAsObjectFiles(), saveAsHadoopFiles()
      • 6.5.2 foreachRDD()
    • 6.6 CheckPoint
    • 6.7 캐시
    • 6.8 모니터링
    • 6.9 주요 설정
    •  
  • ▣ 07장: 스트럭처 스트리밍
    • 7.1 개요
    • 7.2 프로그래밍 절차
    • 7.3 데이터프레임과 데이터셋 생성
    • 7.4 스트리밍 연산
      • 7.4.1 기본 연산 및 집계 연산
      • 7.4.2 윈도우 연산
      • 7.4.3 워터마킹
      • 7.4.4 조인 연산
      • 7.4.5 스트리밍 중복 데이터 제거
      • 7.4.6 스트리밍 쿼리
    • 7.5 정리
    •  
  • ▣ 08장: MLlib
    • 8.1 개요
    • 8.2 관측과 특성
    • 8.3 레이블
    • 8.4 연속형 데이터와 이산형 데이터
    • 8.5 알고리즘과 모델
    • 8.6 파라메트릭 알고리즘
    • 8.7 지도학습과 비지도학습
    • 8.8 훈련 데이터와 테스트 데이터
    • 8.9 MLlib API
    • 8.10 의존성 설정
    • 8.11 벡터와 LabeledPoint
      • 8.11.1 벡터
      • 8.11.2 LabeledPoint
    • 8.12 파이프라인
    • 8.13 알고리즘
      • 8.13.1 Tokenizer
      • 8.13.2 TF-IDF
      • 8.13.3 StringIndexer, IndexToString
    • 8.14 회귀와 분류
      • 8.14.1 회귀
      • 8.14.2 분류
    • 8.15 클러스터링
    • 8.16 협업 필터링
    • 8.17 정리
    •  
  • ▣ 09장: SparkR
    • 9.1 개요
    • 9.2 R 설치 및 실행
    • 9.3 데이터프레임
    • 9.4 데이터프레임 생성
      • 9.4.1 R데이터프레임으로부터 생성
      • 9.4.2 파일로부터 생성
    • 9.5 데이터프레임 연산
      • 9.5.1 조회 및 기본 연산
      • 9.5.2 그룹 및 집계 연산
      • 9.5.3 칼럼 연산
      • 9.5.4 집합 연산
      • 9.5.5 dapply(), dapplyCollect()
      • 9.5.6 gapply(), gapplyCollect()
      • 9.5.7 spark.lapply()
      • 9.5.8 createOrReplaceTempView()
      • 9.5.9 write()
    • 9.6 하이브 연동
    • 9.7 머신러닝
    • 9.8 정리
    •  
  • ▣ 10장: GraphX
    • 10.1 주요 용어
      • 10.1.1 유방향 그래프
      • 10.1.2 유방향 멀티 그래프
      • 10.1.3 속성 그래프
    • 10.2 데이터 타입
      • 10.2.1 RDD
      • 10.2.2 VertextID
      • 10.2.3 꼭짓점
      • 10.2.4 선(Edge)
      • 10.2.5 EdgeTriplet
      • 10.2.6 VertexRDD
      • 10.2.7 EdgeRDD
      • 10.2.8 Graph
    • 10.3 그래프 생성
    • 10.4 그래프 연산
      • 10.4.1 numEdges, numVertices
      • 10.4.2 inDegrees, outDegrees, degrees
      • 10.4.3 vertices, edges, triplets
      • 10.4.4 mapVertices(), mapEdges(), mapTriplets()
      • 10.4.5 reverse()
      • 10.4.6 subgraph()
      • 10.4.7 mask()
      • 10.4.8 groupEdges()
      • 10.4.9 joinVertices(), outerJoinVertices()
      • 10.4.10 collectNeighborIds(), collectNeighbors()
      • 10.4.11 aggregateMessages()
      • 10.4.12 pregel()
    • 10.5 VertextRDD, EdgeRDD 연산
    • 10.6 그래프 알고리즘
    • 10.7 정리
    •  
  • ▣ 부록: 스칼라란?
    • 스칼라 설치
    • 스칼라 셸
    • 변수 타입과 변수 선언
    • Range와 형변환
    • 클래스, 객체, 컴패니언 오브젝트
    • 트레이트와 상속
    • apply
    • 튜플과 옵션, 케이스클래스
    • 패턴 매치
    • 패키지 객체
    • type
    • 임포트
    • 함수와 메서드
    • 제네릭
    • 암묵적 변환과 타입 클래스 패턴
    • 정리
  • 93쪽에서 99쪽 2.1.2절 '스파크컨텍스트 생성' 전까지의 내용을 다음 파일로 교체

    spark2nd-93-99.pdf

  • 224쪽, 본문 중간의 번호 목록

    4. 3번 단계가 제대로 수행됐다면

    ==>

    3. 2번 단계가 제대로 수행됐다면