통합 컴퓨팅 엔진이며, 클러스터 환경에서 데이터를 병렬로 처리하는 라이브러리 집합파이썬, 자바, 스칼라, R 지원SQL뿐만 아니라 스트리밍, 머신러닝까지 넓은 범위의 라이브러리 제공단일 노트북 환경에서부터 수천 대의 서버로 구성된 클러스터까지 다양한 환경에서 실행 가능
보통 한 대의 컴퓨터는 대규모 정보를 연산할 만한 자원이나 성능을 가지지 못함연산을 할 수 있다고 해도 완료하는데 너무 많은 시간이 걸림컴퓨터 클러스터는 여러 컴퓨터의 자원을 모아 하나의 컴퓨터처럼 사용할 수 있게 만듦이 클러스터에서 작업을 조율할 수 있는 프레임워크가
스칼라와 파이썬에서 사용하는 DataFrame은 불특정 다수의 row와 column을 가짐row의 수를 알 수 없는 이유는, 데이터를 읽는 과정이 지연 연산 형태의 트랜스포메이션이기 때문스파크는 각 column의 데이터 타입을 추론하기 위해 적은 양의 데이터를 읽음ex
spark-submit 명령을 사용하면 대화형 셀에서 개발한 프로그램을 운영용 애플리케이션으로 전환spark-submit 명령은 애플리케이션 코드를 클러스터에 전송해 실행시키는 역할을 함참고DataSet은 자바와 스칼라의 정적 데이터 타입을 지원함타입 안정성을 지원하므
데이터 흐름을 정의하는 기본 추상화 개념비정형 로그 파일부터 반정형 CSV파일, 매우 정형적인 파케이파일까지 다양한 유형의 데이터를 처리할 수 있다.구조적 API에는 다음과 같은 세 가지 분산 컬렉션 API가 있음DataSetDataFrameSQL 테이블과 뷰잘 정의된
DataFrame의 구성 Row 타입의 레코드 레코드에 수행할 연산 표현식을 나타내는 여러 컬럼 스키마: 각 컬럼명과 데이터 타입을 정의 파티셔닝: DataFrame이나 Dataset이 클러스터에서 물리적으로 배치되는 형태를 정의 파티셔닝 스키마: 파티션을 배치
lit함수를 적용하여 다른언어의 데이터 타입을 스파크 데이터 타입에 맞게 변환불리언은 모든 필터링 작업의 기반불리언 구문은 and, or, true, false로 구성불리언 구문을 사용해 true 또는 false로 평가되는 논리 문법을 만듦불리언 식에는 일치 조건, 비
count 메서드는 트랜스포메이션이 아닌 액션이라 전체 크기를 알아보는 용도가 아닌 캐싱 작업을 수행하는 용도로 사용되기도 한다.count(\*) 구문은 null값을 가진 로우를 포함count함수에 특정 컬럼을 지정하면 null값 포함 X빅데이터를 사용해 연산을 수행하
왼쪽과 오른쪽 데이터셋에 있는 하나 이상의 키값을 비교하고 왼쪽 데이터셋과 오른쪽 데이터셋의 결합 여부 결정 결과 데이터셋에 어떤 데이터가 있어야 하는지 결정종류내부 조인외부 조인왼쪽 외부 조인오른쪽 외부 조인왼쪽 세미 조인왼쪽 안티 조인자연 조인교차 조인참으로 평가
스파크 핵심 데이터소스 CSVJSON파케이ORCJDBC/ODBC연결일반 텍스트 파일핵심 서드파티 데이터소스카산드라HBase몽고디비AWS RedshiftXML스파크에서 데이터를 읽을 땐 기본적으로 DataFrameReader를 사용함DataFrameReader는 Spar
스파크 SQL을 사용해서 다음과 같은 작업을 수행할 수 있음데이터베이스에 생성된 뷰나 테이블에 SQL쿼리 실행시스템 함수를 사용사용자 정의 함수 정의워크로드를 최적화 하기 위해 쿼리 실행 계획 분석스파크 SQL은 DataFrame과 Dataset API에 통합되어 있음
Dataset은 구조적 API의 기본 데이터 타입DataFrame은 Row 타입의 DatasetDataset은 자바 가상 머신을 사용하는 언어인 스칼라와 자바에선만 사용 가능도메인별 특정 객체를 효과적으로 지원하기 위해서는 인코더(encoder)의 개념이 필요스칼라에서
스파크에는 두 종류의 저수준 API가 있음분산 데이터 처리를 위한 RDD분산형 공유 변수를 배포하고 다루기 위한 API(브로드캐스트 변수와 어큐뮬레이터)고수준 API에서 제공하지 않는 기능이 필요한 경우클러스터의 물리적 데이터의 배치를 아주 세밀하게 제어해야하는 상황R
이 장에서 다룰 핵심 주제집계와 키-값 형태의 RDD사용자 정의 파티셔닝RDD 조인메서드 이름에 ByKey가 있다면 PairRDD 타입(키-값 타입)만 사용 가능RDD에 맵 연산을 수행해서 키-값 구조로 만들 수 있음현재 값으로 부터 키를 생성하는 함수mapValues
스파크의 저수준 API에는 RDD 인터페이스 외에도 두 번재 유형인 분산형 공유 변수가 있다.분산형 공유 변수 종류브로드캐스트 변수어큐뮬레이터어큐뮬레이터를 사용하면 모든 태스크의 데이터를 공유 결과에 추가할 수 있음브로드캐스트 변수를 사용하면 모든 워커 노드에 큰 값을
이 장에서 알아볼 주제스파크 애플리케이션의 아키텍처와 컴포넌트스파크 내/외부에서 실행되는 스파크 애플리케이션의 생애주기파이프라이닝과 같은 중요한 저수준 실행 속성스파크 애플리케이션을 실행하는 데 필요한 사항스파크 애플리케이션의 운전자 역할을 하는 프로세스스파크 애플리케
스파크 애플리케이션은 스파크 클러스터와 사용자 코드 두 가지 조합으로 구성됨위 코드가 실행되면 애플리케이션에서 활용할 수 있는 SparkSession객체가 생성됨애플리케이션을 테스트하려면 애플리케이션을 작성할 때 몇 가지 핵심 원칙과 구성 전략을 고려해야함데이터 파이프
docs스파크가 지원하는 클러스터 매니저스탠드얼론하둡 YARN아파치 메소스쿠버네티스(책 집필 당시인 2017년 12월에는 없었음)위 클러스터 매니저는 스파크 애플리케이션을 같은 방식으로 실행함하지만 각 클러스터 매니저마다 추구하는 방향성이 다르므로 장단점을 이해하고 상
스파크 잡의 어느 지점에서 오류가 발생했는지 파악하려면 스파크 잡을 모니터링해야함클러스터에서 사용자 애플리케이션이 실행되는 상황을 파악하거나 디버깅하려면 가장 먼저 스파크 모니터링 도구를 사용해야함스파크 모니터링 도구스파크 UI스파크 로그스파크 UI와 스파크 로그는 실
18장에서는 애플리케이션 모니터링 및 디버깅용 도구를 사용해 잡의 신뢰도를 높일 수 있었음이번에는 잡의 실행 속도를 높이기 위한 성능 튜닝 방법을 알아볼 것임주요 튜닝 영역코드 수준의 설계(ex) RDD와 DataFrame 중 하나 선택)보관용 데이터조인집계데이터 전송
스파크는 스트림 처리를 위한 다음 두 가지 API를 도입함DStream(Discretized Stream)구조적 스트리밍DStream자바나 파이썬 객체에 대한 저수준 연산만 지원따라서 고수준 최적화 기법을 활용하는데 한계가 있음구조적 스트리밍DataFrame, Data
구조적 스트리밍을 구성하는 핵심 개념과 구조적 스트리밍이 얼마나 사용하기 쉬운지 살펴볼것임스트림 데이터를 데이터가 계속해서 추가되는 테이블처럼 다룬다는 것이 핵심 아이디어스트리밍 잡은 계속해서 신규 입력 데이터를 확인 및 처리함내고장성을 보장하면서 신규 데이터가 유입될
이벤트 시간 처리와 상태 기반 처리의 핵심 아이디어는 잡의 전체 생명주기 동안 관련 상태를 유지하는 것이 두 가지 방식을 사용해서 데이터를 싱크로 출력하기 전에 정보를 갱신할 수 있음스트림 처리 시스템의 두 가지 이벤트 시간 유형이벤트가 실제로 발생한 시간(이벤트 시간
장애 복구는 스트리밍 애플리케이션을 운영할 때 매우 신경써야하는 부분장애 원인 예시클러스터 머신 문제마이그레이션 실수로 스키마 변경 문제구조적 스트리밍 애플리케이션은 단순한 재시작만으로 장애 상황 극복 가능체크포인트와 WAL을 사용하기 때문장애 상황 발생 시 단순히 애