Chapter6 다양한 데이터 타입 다루기

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

스파크에서 데이터를 사용하기 위해 프로그래밍 언어의 고유 데이터 타입을 스파크 데이터 타입으로 변환히키기 위해서는 lit함수를 사용한다. lit함수는 다른 언어의 데이터 타입을 스파크 데이터 타입에 매핑시켜 변환한다.

Boolean 데이터 타입 다루기

Boolean 구분의 종류로는 and, or, true, false 등이 있으며, Boolean 구문을 사용해 true 또는 false로 평가되는 논리문법을 만든다. and구문을 사용할 때 주의할 점은 내부적으로 필터 사이에 and구문을 추가해 모든 필터를 하나의 문장으로 변환하여 처리한다는 점을 기억해야 한다. or구문은 동일한 구문 사이의 양자택일을 하므로 동일한 구문에 조건의 정의해야 한다.

수치형 데이터 타입 다루기

수치형 데이터 타입은 연산 방식을 잘 정의하여 원하는 형태로 출력값을 나오도록 하는 것이 중요하다. 통계용 함수나 메소드를 사용해 상관계수, 백분위수 등을 구할 수도 있다.

문자형 데이터 타입 다루기

문자열은 거의 모든 데이터 처리 과정에서 필수적이다. 데이터 추출, 데이터 치환, 문자열 존재 여부, 대/소문자 변환 처리 등의 작업을 처리할 때 문자형 데이터를 다루게 된다. 특히 정규 표현식을 사용해 문자열의 존재여부나 일치하는 문자열을 치환하는데 스파크는 자바 정규 표현식이 가진 능력을 활용한다.

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

날짜와 타임스탬프는 형식에 따라 의미가 다르게 해석될 수 있으므로, 시간대를 지속적으로 확인하고 포맷이 유효한지 확인해야 한다. 하지만 스파크는 복잡성을 낮추기 위해 달력 형태의 날짜와 날짜, 시간 정보를 모두 가지는 타임스탬프에만 집중한다.

null 값 다루기

DataFrame에서 비워져 있는 값을 표현할 때 null값을 사용한다. 스파크에서는 빈 문자열이나 대체 문자열을 사용하는 대신 null값을 사용할 때 최적화를 수행할 수 있다. DataFrame의 하위패키지인 .na를 사용하여 null을 다루는 것이 기본이다.

복합 데이터 타입 다루기

복합 데이터 타입을 사용해 문제에 더 적합한 방식으로 데이터를 구성하고 구조화할 수 있다. DataFrame 내부의 DataFrame인 구조체, 여러 데이터의 나열로 정의할 수 있는 배열, map 함수와 컬럼의 key-value쌍을 이용해 생성하는 맵이 있습니다.

JSON 다루기

스파크에서는 문자열 형태의 JSON을 직접 조작할 수 있으며, JSON을 파싱하거나 JSON 객체로 만들 수 있다.

사용자 정의 함수(User Defined Function)

사용자 정의 함수(UDF)는 파이썬이나 스칼라, 외부 라이브러리를 사용해 사용자가 원하는 형태로 트랜스포메이션을 만들 수 있게 한다. 스파크 UDF는 여러 언어로 구현될 수 있어 강력하며, 레코드별 데이터를 처리하기 때문에 특정 포멧이나 언어를 사용하지 않는다. UDF는 SparkSession이나 Context에서 사용할 수 있게 임시 함수 형태로 등록된다. UDF를 만들고 처리하는 과정은 다음과 같다.

  1. UDF작성 및 테스트
  2. 모든 워커 노드에서 사용할 수 있도록 스파크에 등록
  • 드라이버에서 함수를 직렬화하고 네트워크를 통해 모든 익스큐터로 전달
  1. (스칼라나 자바를 사용한 경우) JVM 환경에서만 사용할
    수 있기 때문에 스파크 내장 함수를 활용할 수 없어 성능 저하가 발생한다.
  2. (파이썬을 사용한 경우) 워커 노드에 파이썬 프로세스를 실행하고 파이썬이 이해할 수 있는 포맷으로 모든 데이터를 직렬화한다. 이후 파이썬 프로세스에 있는 데이터의 로우마다 함수를 실행하고 실행 결과를 JVM과 스파크 처리 결과에 반환한다.

Reference

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

profile
개발자 지망생입니다.

0개의 댓글