2 분 소요

[Spark The Definitive Guide - BIG DATA PROCESSING MADE SIMPLE] 책을 중심으로 스파크를 개인 공부를 위해 요약 및 정리해보았습니다.
다소 복잡한 설치 과정은 도커에 미리 이미지를 업로해 놓았습니다. 즉, 도커 이미지를 pull하면 바로 스파크를 사용할 수 있습니다.

도커 설치 및 활용하는 방법 : [Spark] 빅데이터와 아파치 스파크란 - 1.2 스파크 실행하기
도커 이미지 링크 : https://hub.docker.com/r/ingu627/hadoop
예제를 위한 데이터 링크 : FVBros/Spark-The-Definitive-Guide
예제에 대한 실행 언어는 스칼라(scala)로 했습니다.
앞으로 스파크와 관련된 내용은 딥러닝 부분을 제외하고 스칼라로 진행될 예정입니다.

기본 실행 방법
1. 예제에 사용 될 데이터들은 도커 이미지 생성 후 spark-3.3.0 안의 하위 폴더 data를 생성 후, 이 폴더에 추가합니다.
1.1 데이터와 도커 설치 및 활용하는 방법은 위에 링크를 남겼습니다.
2. 프로그램 시작은 cd spark-3.3.0 후, ./bin/spark-shell 명령어를 실행하시면 됩니다.



1. 데이터소스 모드, 설명


2. 읽기 모드

  • 외부 데이터소스에서 데이터를 읽다 보면 자연스럽게 형식에 맞지 않는 데이터를 만나게 된다.
    • 특히 반정형 데이터소스를 다룰 때 많이 발생한다.
  • 읽기 모드(read mode)는 스파크가 형식에 맞지 않는 데이터를 만났을 때의 동작 방식을 지정하는 옵션이다.
    • default : permissive

image


3. 저장 모드

  • 저장 모드(write mode)는 스파크가 지정된 위치에서 동일한 파일이 발견했을 때의 동작 방식을 지정하는 옵션이다.
    • default : errorIfExists

image


4. CSV 옵션

  • CSV는 각 줄이 단일 레코드가 되며 레코드의 각 필드를 콤마로 구분하는 일반적인 텍스트 파일 포맷이다.
  • CSV 파일은 정형으로 보이지만, 사실 매우 가다로운 파일 포맷 중 하나이다.
    • 그 이유는 운영 환경에서는 어떤 내용이 들어 있는지, 어떠한 구조로 되어 있는지 등 다양한 전제를 만들어낼 수 없기 때문이다.
  • 때문에 CSV reader는 많은 수의 옵션을 제공한다.

image

image


5. JSON 옵션

  • JSON(JavaScript Object Notation)은 자바스크립트에서 온 파일 형식들인 즉, 자바스크립트 객체 표기법이다.
  • JSON은 객체이기 때문에 CSV보다 옵션 수가 적다.

  • Table 9-4. JSON data source options
    • 책에서는 설명 부분이 잘렸기 때문에 이 부분만 마크다운으로 작성했다.
Read/Write Key Potential values Default Description
Both compression or codec None, uncompressed, bzip2, deflate, gzip, lz4, or snappy none Declares what compression codec Spark should use to read or write the file.
Both dateFormat Any string or character that conforms to Java’s SimpleDataFormat. yyyy-MM-dd Declares the date format for any columns that are date type.
Both timestampFormat Any string or character that conforms to Java’s SimpleDataFormat. yyyy-MM-dd’T’HH:​mm:ss.SSSZZ Declares the timestamp format for any columns that are timestamp type.
Read primitiveAsString true,false false Infers all primitive values as string type.
Read allowComments true,false false Ignores Java/C++ style comment in JSON records.
Read allowUnquotedFieldNames true,false false Allows unquoted JSON field names
Read allowSingleQuotes true,false true Allows single quotes in addition to double quotes.
Read allowNumericLeadingZeros true,false false Allows leading zeroes in numbers (e.g., 00012)
Read allowBackslashEscapingAnyCharacter true,false false Allows accepting quoting of all characters using backslash quoting mechanism
Read columnNameOfCorruptRecord Any String Value of spark.sql.column&NameOfCorruptRecord Allows renaming the new field having a malformed string created by permissive mode. This will override the configuration value.
Read multiLine true,false false Allows for reading in non-line-delimited JSON files.


6. 파케이 옵션

  • 파케이(parquet)는 다양한 스토리지 최적화 기술을 제공하는 오픈소스로 만들어진 컬럼 기반의 데이터 저장 방식이다.
  • 파케이는 옵션이 거의 없다.
  • 단 2개의 옵션만 존재하는 이뉴느 스파크의 개념에 아주 잘 부합하고 알맞게 정의된 명세를 가지고 있기 때문이다.

image


7. JDBC 옵션

  • JDBC는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다. 1
    • JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다.

image

image





References

댓글남기기