더북(TheBook)

5.4.2.1 Writer 설정

DataFrameWriter는 빌더(builder) 패턴(https://goo.gl/zz7OhT)으로 구현되었다. 다시 말해 DataFrameWriter의 각 설정 함수가 현재까지 설정된 DataFrameWriter에 자신에게 전달된 설정을 덧붙여 다시 DataFrameWriter 객체를 반환하므로, 원하는 설정을 하나씩 차례대로 쌓아서 전체 설정 항목을 점진적으로 추가할 수 있다. 다음은 DataFrameWriter 설정 함수다.

format: 데이터를 저장할 파일 포맷, 즉 데이터 소스 이름을 지정한다. 기본 데이터 소스(json, parquet, orc)나 커스텀 데이터 소스 이름을 사용할 수 있다. format을 지정하지 않으면 기본으로 parquet를 사용한다.

mode: 지정된 테이블 또는 파일이 이미 존재하면 이에 대응해 데이터를 저장할 방식을 지정한다. overwrite(기존 데이터를 덮어쓴다), append(기존 데이터에 추가한다), ignore(아무것도 하지 않고 저장 요청을 무시한다), error(예외를 던진다) 중 하나를 지정할 수 있으며, 기본으로는 error가 사용된다.

optionoptions: 데이터 소스를 설정할 매개변수 이름과 변수 값을 추가한다(options 메서드에는 매개변수의 이름-값 쌍을 Map 형태로 전달한다).

partitionBy: 복수의 파티션 칼럼을 지정한다.22

스파크 SQL의 spark.sql.sources.default 매개변수는 스파크가 기본으로 사용할 데이터 소스를 지정하며, 기본 값은 parquet다.

앞서 설명했듯이, DataFrameWriter 설정 함수들을 하나씩 차례대로 덧붙여 DataFrameWriter 객체를 완성할 수 있다.

postsDf.write.format("orc").mode("overwrite").option(...)

 

22 역주 파일 시스템에 데이터를 저장할 때도 파티션 칼럼을 지정하면 하이브의 테이블 파티션과 유사한 방식의 폴더 구조가 형성된다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.