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

Connected

연습 문제

빅데이터, 아주 작은 티블

직전 연습 문제에서 데이터를 Spark로 복사했을 때, copy_to()가 값을 반환했죠. 이 반환값은 자체 데이터는 담고 있지 않은 특별한 형태의 tibble()입니다. 이를 설명하려면 tidyverse 패키지가 데이터를 저장하는 방식을 조금 알아야 해요. 티블은 보통 더 깔끔한 출력 방식을 가진 data.frame의 변형일 뿐입니다. 하지만 dplyr은 데이터베이스처럼 원격 데이터 소스의 데이터, 그리고 여기처럼 Spark의 데이터를 담는 것도 허용합니다. 원격 데이터셋의 경우, 티블 객체는 원격 데이터에 대한 연결만 저장합니다. 이는 나중에 더 자세히 다룰 예정이지만, 지금 중요한 점은 데이터셋이 아주 커도 티블 객체 자체의 크기는 작다는 것입니다.

Spark 쪽에서는 데이터가 DataFrame이라는 변수에 저장됩니다. 이는 R의 data.frame 변수 타입과 거의 동일한 개념입니다. (다만 열의 변수 타입 명칭이 조금 다른데, 예를 들어 R의 numeric 열은 Spark에서는 DoubleType 열로 불립니다.) 본 강의 전반에서 별도의 구분이 필요하지 않은 한 data frame이라는 용어를 사용합니다. 이 타입들은 데이터베이스의 테이블과도 유사하므로, 직사각형 형태의 데이터를 설명할 때 때로는 table이라는 표현도 사용할 수 있습니다.

Spark 연결과 Spark 데이터 프레임의 이름을 나타내는 문자열을 가지고 tbl()을 호출하면, copy_to()를 사용했을 때와 동일한 티블 객체가 반환됩니다.

이번 연습 문제에서 보게 될 유용한 도구로 pryr 패키지의 object_size() 함수가 있습니다. 이 함수는 객체가 메모리를 얼마나 차지하는지 보여줍니다.

지침

100 XP

spark_conn이라는 Spark 연결이 이미 준비되어 있습니다. 1,000개 트랙의 메타데이터가 Spark 클러스터의 "track_metadata" 테이블에 저장되어 있어요.

  • tbl()을 사용해 "track_metadata" 테이블에 연결하고, 결과를 track_metadata_tbl에 할당하세요.
  • track_metadata_tbl에 dim()을 적용해 데이터셋의 크기를 확인하세요.
  • track_metadata_tbl에 object_size()를 적용해 티블 객체 자체의 크기가 얼마나 작은지 확인하세요.