[스터디] 스파크 완벽 가이드 5일차

Kristopher·2022년 1월 12일
0

Spark 스터디

목록 보기
5/16

Chapter5 구조적 API 기본 연산

DataFrame은 Row타입의 레코드와 각 레코드에 수행할 연산 표현식을 나타내는 여러 컬럼으로 구성된다. DataFrame의 스키마는 각 컬럼명과 데이터 타입을 정의하고, 파티셔닝은 DataFrame이나 Datset이 클러스터에서 물리적으로 배치되는 형태를 정의한다. 파티셔닝 스키마는 파티션을 배치하는 방법을 정의하며 파티셔닝의 분할 기준은 특정 컬럼이나 비결정론적 값을 기반으로 설정한다.

스키마(Schema)

스키마는 여러가의 StructField타입 필드로 구성된 StructType 객체이다. StructField는 이름, 데이터 타입, null값의 허용 여부를 지정할 수 있습니다.

컬럼과 표현식

스파크의 컬럼은 스프레드시트, R의 DataFrame, Pandas의 DataFrame 컬럼과 유사하다. 사용자는 표현식을 사용해 컬럼을 선택, 조작, 제거할 수 있다. 가장 간단하게 col,column함수를 사용해 컬럼을 생성하고 참조하는 것이 가장 간단하다.

col( "컬럼명 1")
column("컬럼명 2")

스파크의 컬럼은 표현식을 사용해 레코드 단위로 계산한 값을 단순하게 나타내는 논리적 구조이다. 컬럼의 실제값을 얻기 위해 DataFrame이 필요하며, 내용을 수정하고 싶다면 DataFrame의 스파크 트랜스포메이션을 사용해야 한다.

DataFrame 정의시 컬럼을 표현식이라고 하였다. 여기서 표현식의 의미란 DataFrame 레코드의 여러 값에 대한 트랜스포메이션 집합을 의미한다. 여러 컬럼명을 입력값으로 받아 식별하고, 단일 값을 만들기 위해 다양한 표현식을 각 레코드에 적용하는 함수라고 생각할 수 있다.

  • 컬럼은 단지 표현식이다
  • 컬럼과 컬럼의 트랜스포메이션은 파싱된 표현식과 동일한 논리적 실행 계획으로 컴파일된다.

레코드와 로우

스파크는 레코드를 Row 객체로 표현하며, 값을 생성하기 위해 컬럼 표현식으로 Row 객체를 다룬다. Row 객체는 내부적으로 바이트 배열을 가지며 컬럼 표현식으로만 다룰 수 있을 뿐 사용자에게 노출되지 않는다.

DataFrame의 트랜스포메이션

DataFrame을 다루는 방법은 몇가지 주요 방법으로 나뉜다.

  • 로우나 컬럼 추가/제거
  • 로우를 컬럼으로 변환하거나 반대로 변환
  • 컬럼값을 기준으로 로우 순서 변경

위의 모든 작업은 트랜스포메이션으로 변경할 수 있으며, 가장 일반적인 트랜스포메이션은 모든 로우의 특정 컬럼값을 변경하고 그 결과를 반환하는 것이다.

Reference

스파크 완벽 가이드
아파치 스파크

profile
개발자 지망생입니다.

0개의 댓글