НачатьНачать бесплатно

Сохранение промежуточных результатов

Как вы видели в главе 1, копирование данных между R и Spark — принципиально медленная операция. Это означает, что собирать данные с помощью collect(), как в предыдущем упражнении, стоит только тогда, когда это действительно необходимо.

Оператор пайпа очень удобен для последовательного объединения команд обработки данных, однако провести весь анализ в одной цепочке не получится. Например, следующий подход крайне нежелателен: отлаживать такой код будет практически невозможно.

final_results <- starting_data %>%
  # 743 steps piped together
  # ... %>%
  collect()

Возникает дилемма: нужно сохранять результаты промежуточных вычислений, но использовать collect() не хочется из-за низкой скорости. Решение — использовать compute(): эта функция выполняет вычисления, но сохраняет результаты во временном датафрейме прямо в Spark. compute() принимает два аргумента: тиббл и имя переменной для датафрейма Spark, в котором будут храниться результаты.

a_tibble %>%
  # some calculations %>%
  compute("intermediate_results")

Это упражнение является частью курса

Введение в Spark с sparklyr на R

Посмотреть курс

Инструкции к упражнению

Соединение со Spark уже создано для вас как spark_conn. Тиббл, привязанный к метаданным треков в Spark, предварительно определён как track_metadata_tbl.

  • Отфильтруйте строки track_metadata_tbl, в которых artist_familiarity больше 0,8.
  • Вычислите результаты с помощью compute().
    • Сохраните результаты в датафрейме Spark с именем "familiar_artists".
    • Присвойте результат R-тибблу с именем computed.
  • Просмотрите доступные наборы данных Spark с помощью src_tbls().
  • Выведите class() объекта computed. Обратите внимание: в отличие от collect(), функция compute() возвращает удалённый тиббл — данные по-прежнему хранятся в кластере Spark.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# track_metadata_tbl has been pre-defined
track_metadata_tbl

computed <- track_metadata_tbl %>%
  # Filter where artist familiarity is greater than 0.8
  ___ %>%
  # Compute the results
  ___

# See the available datasets
___

# Examine the class of the computed results
___
Редактировать и запускать код