Зачем вам GreenplumR: синергия MPP-СУБД и интерпретируемого языка для статистики

Автор Категория ,
Зачем вам GreenplumR: синергия MPP-СУБД и интерпретируемого языка для статистики

Сегодня рассмотрим, как использовать статистический язык R для анализа данных в Greenplum. Что такое GreenplumR, как работает этот интерактивный клиент, чем он полезен специалисту по Data Science и каковы недостатки этого инструмента аналитики больших данных.

Что такое GreenplumR

Хотя основным языком в области Data Science сегодня считается Python, иногда специалисты по статистике также используют R – мультипарадигмальный интерпретируемый язык программирования для статистической обработки данных и работы с графикой. R поддерживает широкий спектр статистических и численных методов, дополняется и расширяется за счет пакетов со специфическими функциями для конкретных областей применения. Поэтому неудивительно, что популярная аналитическая MPP-СУБД Greenplum поддерживает этот язык, предоставляя соответствующий клиент – GreenplumR как интерактивный инструмент анализа данных. Клиент предоставляет интерфейс R для таблиц и представлений, не требуя знаний SQL для работы с этими объектами базы данных.

Можно использовать GreenplumR с процедурным языком Greenplum PL/R для запуска функции R с данными в СУБД. GreenplumR анализирует функцию R и создает пользовательскую функцию (UDF) для выполнения в Greenplum, которая далее запускается движком СУБД параллельно на хостах сегмента.

При использовании GreenplumR никакие аналитические данные не загружаются в среду вычислений R, что особенно важно при работе с большими наборами данных. Только функция R и минимальные данные передаются между средой R и Greenplum. Перед использованием GreenplumR важно убедиться, что соблюдены следующие условия:

  • версия Greenplum не ниже 6.1;
  • клиентская система разработки подключена к главному хосту Greenplum;
  • в вашей клиентской системе установлена ​​версия R 3.6.0 или новее;
  • переменная среды $R_HOME установлена корректно;
  • необходимые процедурные языки программирования PL/R Language и PL/Container Language установлены и настроены в кластере Greenplum, а также зарегистрированы в каждой базе данных, где планируется использовать клиент GreenplumR для чтения данных или записи данных в Greenplum.

Чтобы понять, как GreenplumR работает с базой данных, рассмотрим некоторые базовые функции.

Совместное использование Greenplum и R

Чтобы использовать GreenplumR для анализа данных в Greenplum средствами R, после установки и настройки клиента и окружения, следует подключить его к базе данных с помощью функций db.connect() и db.connect.dsn(). Функция db.disconnect() закрывает соединение с базой данных, возвращая логическое значение, определяющее, было ли соединение успешно разорвано.

При подключении к СУБД необходимо указать главный хост, порт, имя базы данных, имя пользователя, пароль и другую информацию с помощью аргументов функции или файла имени источника данных (DSN). Если аргументы или значения не указаны, GreenplumR использует значение по умолчанию. Функции db.connect[.dsn]() возвращают целочисленный идентификатор соединения, который указывается при работе с таблицами или представлениями в базе данных, а также при закрытии соединения. Посмотреть информацию об активных подключениях Greenplum поможет функция db.list().

Фундаментальной структурой данных R является датафрейм (data.frame) – набор переменных, представленный в виде списка векторов. GreenplumR работает с объектами db.data.frame и предоставляет функции для преобразования и управления объектами этого типа:

  • db.data.frame() записывает данные из файла или data.frame в таблицу Greenplum. Можно использовать эту функцию для записи результатов запроса в таблицу или для создания локального db.data.frame.
  • data.frame() создает временный объект R, который ссылается на представление или таблицу в Greenplum. При использовании этой функции данные в R не загружаются.

GreenplumR поддерживает две функции, которые позволяют запускать функцию R в Greenplum для каждой строки таблицы: db.gpapply() и db.gptapply(). Эти функции работают только с conn.id=1 и передают один входной аргумент фрейма данных функции R FUN. При определении FUN для получения списка аргументов следует указать имя аргумента функции для отображения имени столбца таблицы Greenplum во входной сигнатуре (input.signature), указав это сопоставление в порядке столбцов таблицы. Можно использовать процедурный язык Greenplum PL/R или PL/Container в качестве средства запуска функции. Если данные таблицы индексируются, следует применять db.gptapply().

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

Узнайте больше про администрирование и эксплуатацию Greenplum с Arenadata DB для эффективного хранения и аналитики больших данных вам помогут специализированные курсы в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Источники

  1. https://docs.greenplum.org/6-16/analytics/greenplum_r_client.html