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

Двойной сеанс: два вопроса за раз

Методы dplyr, с которыми вы работали в предыдущих двух главах, используют SQL-интерфейс Spark. То есть они преобразуют ваш R-код в SQL-код перед передачей его в Spark. Это отличное решение для базовых операций с данными, однако при более сложной обработке возникают ограничения. Например, можно вычислить среднее значение столбца, но не медиану. Вот пример из упражнения «Суммирование столбцов» в главе 1.

track_metadata_tbl %>%
  summarize(mean_duration = mean(duration)) #OK
track_metadata_tbl %>%
  summarize(median_duration = median(duration))

Помимо этого, sparklyr предоставляет два «нативных» интерфейса, которые будут рассмотрены в следующих двух главах. Нативный означает, что они вызывают код Java или Scala для прямого обращения к библиотекам Spark — без какого-либо преобразования в SQL. sparklyr поддерживает Spark DataFrame Application Programming Interface (API) с функциями, имеющими префикс sdf_. Также поддерживается доступ к библиотеке машинного обучения Spark MLlib: функции «преобразования признаков» начинаются с ft_, а функции «машинного обучения» — с ml_.

Важное принципиальное отличие работы со Spark от работы с R состоит в том, что Spark гораздо строже относится к типам переменных. Большинство нативных функций принимают на вход данные типа DoubleType и возвращают результат того же типа. DoubleType — это аналог типа numeric в R. sparklyr автоматически преобразует numeric в DoubleType, однако преобразование данных типа logical или integer в numeric и обратно — задача пользователя (то есть ваша!).

Какое из следующих утверждений верно?

  1. Методы dplyr в sparklyr преобразуют код в Scala перед запуском на Spark.
  2. Преобразование R-кода в SQL ограничивает набор поддерживаемых вычислений.
  3. Большинство функций моделирования Spark MLlib принимают входные данные типа DoubleType и возвращают результат типа DoubleType.
  4. Большинство функций моделирования Spark MLlib принимают входные данные типа IntegerType и возвращают результат типа BooleanType.

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

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

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

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

Превратите теорию в практику с помощью одного из наших интерактивных упражнений

Начать упражнение