Большие данные, маленький тиббл
В предыдущем упражнении, когда вы скопировали данные в Spark, функция copy_to() вернула значение. Это значение представляет собой особый вид tibble(), который не содержит собственных данных. Чтобы понять, почему так происходит, нужно знать кое-что о том, как пакеты tidyverse хранят данные. Тибблы — это, как правило, вариант data.frame с более удобным методом вывода. Однако dplyr также позволяет им хранить данные из удалённых источников — например, из баз данных или, как в нашем случае, из Spark. Для удалённых наборов данных объект тиббла просто хранит соединение с удалённым источником. Подробнее это будет рассмотрено позже, но главное сейчас: даже если набор данных очень большой, сам объект тиббла занимает мало памяти.
На стороне Spark данные хранятся в переменной типа DataFrame. Это практически прямой аналог типа data.frame в R. (Правда, типы столбцов называются немного иначе — например, столбцы типа numeric называются DoubleType.) На протяжении всего курса будет использоваться термин data frame, если только не потребуется уточнить разницу между data.frame и DataFrame. Поскольку эти типы также аналогичны таблицам баз данных, иногда для описания таких прямоугольных данных будет употребляться термин таблица.
Если вызвать tbl(), передав соединение Spark и строку с именем фрейма данных Spark, функция вернёт тот же объект тиббла, что и copy_to().
Полезный инструмент, который вы увидите в этом упражнении, — функция object_size() из пакета pryr. Она показывает, сколько памяти занимает объект.
Это упражнение является частью курса
Введение в Spark с sparklyr на R
Инструкции к упражнению
Соединение с Spark уже создано для вас в переменной spark_conn. Метаданные треков для 1 000 записей хранятся в кластере Spark в таблице "track_metadata".
- Создайте ссылку на таблицу
"track_metadata"с помощьюtbl(). Присвойте результат переменнойtrack_metadata_tbl. - Проверьте размер набора данных, вызвав
dim()наtrack_metadata_tbl. - Проверьте, насколько мал сам тиббл, вызвав
object_size()наtrack_metadata_tbl.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Link to the track_metadata table in Spark
track_metadata_tbl <- ___(___, "___")
# See how big the dataset is
___(___)
# See how small the tibble is
___(___)