Book/스파크를 다루는 기술

챕터 6.1 API 는 어디서 찾을까

쟈누이 2022. 5. 30. 00:15
반응형

1) dataframe( dataset ) 메서드

  • 데이터 셋의 하위모듈은 다양한 메서드를 제공
  • 메서드를 사용해 여러 가지 문제를 해결 가능
  1. Column 메서드
  • alias 나 contains 같이 컬럼과 관련된 여러가지 매서드를 제공
  • 데이터 타입과 관련된 다양한 함수를 제공
val df = spark.read.format(”csv”).
option( ).

df.printSchema( ) —> 스키마 정보 출력

df.createOrReplaceTempView( “짓고자 하는 테이블 이름”)
—> 데이터 프레임 바탕으로 임시 테이블 생성
—> 테이블을 보려면 spark.sql( “쿼리문”) 을 작성해야함

6.2 스파크 데이터 타입으로 변환하기

  • 반드시 알아두어야 하는 방법
  • 데이터 타입 변환은 lit 함수를 사용한다
  • lit 함수는 다른 언어의 데이터 타입을 스파크 데이터 타입에 맞게 변환
import org.apache.spark.sql.functions.lit

df.select(lit(5), lit(”five”), lit(5.0))

6.3 불리언 데이터 다루기

  • 불리언은 모든 필터링 작업의 기반 이므로 데이터 분석에 필수
  • and, or, true, false 로 구성됨
  • 불리언을 이용해 true 또는 false 로 평가되는 논리 문법을 만듦
  • 조건뿐만 아니라 크기와 같은 비교 연산 조건을 사용할 수도 잇음
  • and 매서드나 or 매서드를 사용해서 불리언 표현식을 여러 부분에 지정 가능
  • 스파크는 내부적으로 and 구문을 필터 사이에 추가해 모든 필터를 하나의 문장으로 변환한 후 동시에 모든 필터를 처리함
  • or 구문 사용시 동일한 구문에 조건을 정의해야 함
  • 불리언 표현식을 사용해 데이터 프레임을 필터링할 수도 있음

6.4 수치형 데이터 타입 다루기

  • 수치형 데이터 타입을 사용해 연산 방식을 정의하면 됨
import org.apache.spark.sql.functions.{expr, pow}

val fabricatedQuantity = pow(col(”Quantity”) * col(UnitPrice”), 2) + 5
df.select(expr(”CustomerId”), fabricatedQuantity.alias(”realQuantity”)).show(2)
  • 반올림도 자주 사용하는 수치형 작업이다.
import org.apache.spark.sql.functions.{round, bround}

df.select(round(col(”UnitPrice”), 1).alias(”rounded”), col
  • round 함수는 소수점 값이 중간값 이상이면 반올림
  • 내림은 bround 함수를 사용
df.select(round(lit(”2.5”)), bround(lit(”2.g”))).show(2)
  • 두 컬럼 사이의 상관관계를 계산하는 것도 수치형 연산 작업 중 하나
import org.apache.spark.sql.functions.{corr}

df.stat.corr(”Quantity”, “UnitPrice”)
df.select(corr(”QUantity”, “UnitPrice”)).show( )
  • 하나 이상의 컬럼에 대한 요약 통계를 계산하는 작업 역시 자주 수행
  • describe 메서드를 사용함
  • describe 함수는 집계(count), 평균(mean), 표준편차(stddev), 최소값(min), 최대값(max) 를 사용
df.describe( ).show( )

6.5 문자열 데이터 타입 다루기

  • 문자열을 다루는 작업은 거의 모든 데이터 처리 과정에서 발생
  • initcap 함수는 주어진 문자열에서 공백으로 나뉘는 모든 단어의 첫글자를 대문자로 변경
import org.apache.spark.sql.functions.{initcap}

df.select(initcap(col(”Description”))).show(2, false)
  • lower 함수를 사용해 문자열 전체 소문자 변경
  • upper 함수를 사용해 문자열 전체 대문자 변경
  • 문자열 주변의 공백을 제거하거나 추가하거나 lpad, rtrim, ltrim, rpad, lpad, trim
  • instr 함수를 사용해 값의 존재 여부를 확인

6.6 날짜와 타임스템프 데이터 타입 다루기

  • 날짜와 시간은 프로그래밍 언어와 데이터 베이스 분야의 변함없는 과제
  • 스파크는 두가지 종류의 시간 관련 정보만을 관리
  • 달력형태의 날짜, 날짜, 시간 정보를 모두 가지는 타임스탬프
  • inferSchema 옵션 활성화된 후 날짜와 타임 스탬프를 포함해 컬럼의 데이터 타입을 정확히 식별하기 위해 시도
반응형