반응형
1) dataframe( dataset ) 메서드
- 데이터 셋의 하위모듈은 다양한 메서드를 제공
- 메서드를 사용해 여러 가지 문제를 해결 가능
- 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 옵션 활성화된 후 날짜와 타임 스탬프를 포함해 컬럼의 데이터 타입을 정확히 식별하기 위해 시도
반응형
'Book > 스파크를 다루는 기술' 카테고리의 다른 글
챕터 4. 구조적 API 개요 (0) | 2022.04.18 |
---|---|
[스파크] 2. 스파크 함수 (0) | 2022.01.23 |
[스파크] 1. RDD 의 기본 행동 연산자 및 변환 연산자 (0) | 2022.01.22 |