주요 컨텐츠로 이동

Spark API

Databricks 무료로 시작하기

Spark를 다루다 보면 다음과 같은 세 가지 API를 접하게 됩니다. DataFrame, Dataset 그리고 RDD의 세 가지입니다.

RDD란 무엇입니까?

RDD, 즉 Resilient Distributed Datasets란 분산형 컴퓨팅을 포함한 레코드 컬렉션으로 본질적으로 내결함성이 있고 변경 불가능합니다. 저수준 API와 병력 방식으로 운영할 수 있는데, 이 경우 지연 기능 때문에 Spark 작업이 빠른 속도로 수행됩니다. RDD가 지원하는 작업 유형은 두 가지입니다.

  • 변환(Transformations) - 또 다른 RDD를 반환하는 지연 실행(lazy operation)으로, 이 RDD는 여기에서 작업을 수행하지 않는 이상 연산을 수행하지 않습니다. 변환의 예로는 map(), flatmap(), filter() 등이 있습니다. SPARK API: RDD 변환
  • 작업(Actions) - 계산을 트리거하고 값을 반환하는 작업입니다. 작업의 예로는 count, top(), savetofile() 등이 있습니다. SPARK API: RDD 작업

RDD의 단점

RDD를 다루기로 선택했다면, 모든 RDD를 각각 최적화해야 합니다. 또한 RDD는 Dataset나 DataFrame과는 달리 수집된 데이터의 스키마를 추론하지 않으므로 사용자가 지정해야 합니다.

DataFrame이란 무엇입니까?

DataFrame은 이름이 명명된 열 아래에 속하는 행의 분산형 컬렉션입니다. 간단히 말하면, 열 헤더를 포함한 Excel 시트와 같다고 보면 됩니다. 아니면 관계형 데이터베이스의 테이블이라든지, R이나 Python에서는 DataFrame과 동급이라고 생각하면 됩니다. 여기에는 RDD와 공통되는 세 가지 특징이 있습니다.

  • 본질적으로 변경 불가능: DataFrame은 사용자가 생성할 수는 있지만 변경할 수는 없습니다. DataFrame은 변형할 수 없는 RDD라고 보면 됩니다.
  • 평가가 느림:  작업(action)을 수행할 때까지 태스크를 실행하지 않습니다.
  • 분산형:  DataFrame은 본질적으로 분산되어 있다는 점에서 RDD와 똑같습니다.

DataFrame 만드는 법

Spark에서 DataFrame을 만들려면 몇 가지 방법이 있습니다.

  • 다양한 데이터 형식을 사용합니다. 예를 들어, JSON, CSV, RDBMS, XML 또는 Parquet에서 데이터 로드
  • 기존 RDD에서 데이터 로드
  • 프로그램 방식으로 스키마 지정

DataFrame의 단점

DataFrame API의 주된 단점은 컴파일링 시간을 안전하게 지원하지 않는다는 점입니다. 따라서 데이터 구조를 모르는 경우 사용자에게 한계가 생깁니다.

Dataset란 무엇입니까?

Dataset는 강력한 형식(strongly-typed), 변경 불가능한 개체 컬렉션으로 이는 관계형 스키마에 매핑됩니다. Dataset는 JVM 개체를 사용하여 만들고 복잡한 기능적인 변환을 사용해 조작할 수 있습니다. Dataset를 만드는 방법은 두 가지입니다.

  • 동적으로
  • SparkSession을 사용해 JSON 파일에서 읽어서.

Dataset의 단점

Dataset의 주된 단점은 문자열로 타입캐스트(typecasting)해야 한다는 점입니다.

추가 자료

용어집으로 돌아가기