팝콘 더블 피처
이전 두 챕터에서 보셨던 dplyr 메서드는 Spark의 SQL 인터페이스를 사용합니다. 즉, R 코드를 SQL 코드로 변환한 뒤 Spark에 전달해 실행해요. 이는 기본적인 데이터 조작에는 훌륭한 방법이지만, 더 복잡한 처리를 하려 할 때 한계가 있습니다. 예를 들어 열의 평균은 계산할 수 있지만, 중앙값은 계산할 수 없어요. 아래는 1장 '열 요약' 연습 문제에서 보셨던 예시입니다.
track_metadata_tbl %>%
summarize(mean_duration = mean(duration)) #OK
track_metadata_tbl %>%
summarize(median_duration = median(duration))
sparklyr에는 다음 두 장에서 다룰 두 가지 "네이티브" 인터페이스도 있습니다. 네이티브란 SQL로 변환하지 않고 Java 또는 Scala 코드를 호출해 Spark 라이브러리를 직접 사용하는 것을 의미해요. sparklyr는 sdf_ 접두사가 붙은 함수들로 Spark DataFrame Application Programming Interface(API)를 지원합니다. 또한 "feature transformation" 함수인 ft_로 시작하는 함수들과 "machine learning" 함수인 ml_로 시작하는 함수들을 통해 Spark의 MLlib에도 접근할 수 있어요.
R과 Spark를 다루는 데에는 중요한 철학적 차이가 하나 있습니다. Spark는 R보다 변수 타입에 훨씬 엄격해요. 대부분의 네이티브 함수는 DoubleType 입력을 원하고 DoubleType 출력을 반환합니다. DoubleType은 R의 numeric 벡터 타입에 해당해요. sparklyr는 numeric을 DoubleType으로 변환해 주지만, logical이나 integer 데이터를 numeric으로 변환하고 다시 되돌리는 일은 사용자(바로 여러분)의 몫입니다.
다음 중 옳은 것은 무엇인가요?
sparklyr의dplyr메서드는 코드를 Spark에서 실행하기 전에 Scala 코드로 변환합니다.- R 코드를 SQL 코드로 변환하면 지원되는 계산의 범위에 제약이 생깁니다.
- 대부분의 Spark MLlib 모델링 함수는
DoubleType입력을 요구하고DoubleType출력을 반환합니다. - 대부분의 Spark MLlib 모델링 함수는
IntegerType입력을 요구하고BooleanType출력을 반환합니다.
이 연습은 강의의 일부입니다
