1. 학습
  2. /
  3. 강의
  4. /
  5. R에서 sparklyr로 시작하는 Spark

Connected

연습 문제

Common people

distinct() 함수로는 고유값을 확인할 수 있었죠. 각 값이 몇 개씩 있는지도 알면 유용합니다. base R에서는 table()로 할 수 있지만, 이는 모든 것을 tibble로 다루는 tidyverse 철학에 맞지 않아 sparklyr에서는 지원하지 않습니다. 대신 count()를 사용해야 합니다. 사용할 때는 따옴표 없이 열 이름을 전달합니다. 예를 들어 열 x, y, z의 고유 조합별 개수를 구하려면 다음처럼 작성합니다.

a_tibble %>%
  count(x, y, z)

이 결과는 다음과 동일하지만,

a_tibble %>%
  distinct(x, y, z)

… 개수를 담은 추가 열 n이 생긴다는 점이 다릅니다.

count()의 아주 좋은 활용은 어떤 값들이 가장 흔한지 구하는 것입니다. 이를 위해 count()를 호출할 때 sort = TRUE를 지정해 n 열의 내림차순으로 정렬하고, 이어서 slice_max()로 상위 원하는 개수만 남기면 됩니다.(slice_max()는 base R의 head()와 비슷하지만, Spark 같은 원격 데이터셋에서도 잘 동작합니다.) 예를 들어 x, y, z 열 조합 중 가장 흔한 상위 20개를 얻으려면 다음과 같이 합니다.

a_tibble %>%
  count(x, y, z, sort = TRUE) %>%
  slice_max(20)

지침

100 XP

이미 spark_conn이라는 Spark 연결이 준비되어 있습니다. Spark에 저장된 트랙 메타데이터에 연결된 tibble은 track_metadata_tbl로 미리 정의되어 있습니다.

  • track_metadata_tbl에서 artist_name 열의 값을 세세요.
    • 행을 인기 순(내림차순)으로 정렬하려면 sort = TRUE를 전달하세요.
  • 결과를 slice_max()로 상위 20개로 제한하세요.