1. Learn
  2. /
  3. Courses
  4. /
  5. R에서 sparklyr로 시작하는 Spark

Connected

Exercise

정렬(sorting) vs. 배열(arranging)

이 장에서는 지금까지 Spark의 MLlib에 있는 일부 feature transformation 함수들을 살펴봤습니다. sparklyr는 Spark DataFrame API를 활용하는 함수들도 제공합니다.

tibble을 정렬하는 dplyr 방식은 arrange()를 사용하는 것입니다. 또한 Spark의 DataFrame API를 이용해 sdf_sort()로도 tibble을 정렬할 수 있습니다. 이 함수는 정렬할 열 이름의 문자 벡터를 받고, 현재는 오름차순 정렬만 지원합니다.

예를 들어, 열 x를 기준으로 정렬하고(동률일 경우) y, 그다음 z 순서로 정렬하려면 아래 코드처럼 dplyr 방식과 Spark DataFrame 방식을 비교할 수 있습니다.

a_tibble %>%
  arrange(x, y, z)
a_tibble %>%
  sdf_sort(c("x", "y", "z"))

어떤 방법이 더 빠른지 확인하려면 arrange()와 sdf_sort()를 모두 사용해 보세요. 같은 이름의 패키지에 들어 있는 microbenchmark()로 코드를 감싸면 실행 시간을 확인할 수 있습니다.

microbenchmark({
  # your code
})

코드 속도 프로파일링에 대해서는 Writing Efficient R Code 강의에서 더 자세히 배울 수 있습니다.

Instructions

100 XP

spark_conn으로 Spark 연결이 생성되어 있습니다. Spark에 저장된 트랙 메타데이터에 연결된 tibble track_metadata_tbl이 미리 정의되어 있습니다.

  • microbenchmark()를 사용해 아래 작업의 실행 시간을 비교하세요.
    • arrange()를 사용해 track_metadata_tbl의 행을 year, 그다음 artist_name, 그다음 release, 그다음 title 순으로 정렬하세요.
    • 결과를 수집하세요.
    • 같은 작업을 이번에는 arrange() 대신 sdf_sort()를 사용해 수행하세요. 열 이름은 따옴표로 감싸는 것을 잊지 마세요.