Установка пакетов R с помощью sqlmlutils

Область применения: SQL Server 2019 (15.x) Управляемый экземпляр SQL Azure

В этой статье описывается использование функций из пакета sqlmlutils для установки пакетов R в экземпляре служб машинного обучения SQL Server и в кластерах больших данных. Устанавливаемые пакеты можно использовать в сценариях R, выполняющихся в базе данных, с помощью инструкции T-SQL sp_execute_external_script.

Примечание.

Описанный в этой статье пакет sqlmlutils используется для добавления пакетов R в SQL Server 2019 и более поздних версий. Для SQL Server 2017 и более ранних версий обратитесь к разделу Установка пакетов с инструментами R.

В этой статье описывается использование функций из пакета sqlmlutils для установки пакетов R в экземпляре служб машинного обучения в управляемом экземпляре SQL Azure. Устанавливаемые пакеты можно использовать в сценариях R, выполняющихся в базе данных, с помощью инструкции T-SQL sp_execute_external_script.

Примечание.

Нельзя обновить или удалить пакеты, предварительно установленные на экземпляре Служб машинного обучения Управляемого экземпляра SQL. Чтобы посмотреть список установленных в настоящее время пакетов, см. раздел Список всех установленных пакетов R.

Необходимые компоненты

  • Установите R и RStudio Desktop на клиентском компьютере, который используется для подключения к SQL Server. Для выполнения сценариев можно использовать любую интегрированную среду разработки R, но в этой статье применяется RStudio.

    Версия R на клиентском компьютере должна соответствовать версии R на сервере, а устанавливаемые пакеты должны быть совместимы с используемой версией R. Сведения о том, какая версия R устанавливается вместе с той или иной версией SQL Server, приведены в разделе Версии Python и R.

    Чтобы проверить версию R для конкретного экземпляра SQL Server, используйте следующую команду T-SQL.

    EXECUTE sp_execute_external_script @language = N'R'
    , @script = N'print(R.version)'
    
  • Установите Azure Data Studio на клиентском компьютере, который используется для подключения к SQL Server. Вы можете использовать другие средства запросов и управления базами данных, но в этой статье рассматривается Azure Data Studio.

Другие вопросы

  • Установка пакета зависит от экземпляра SQL, базы данных и пользователя, указанных в сведениях о подключении, которые вы укажете для sqlmlutils. Чтобы использовать пакет в нескольких экземплярах или базах данных SQL или для разных пользователей, необходимо установить пакет для каждого из них. Исключением является только если пакет устанавливается членом dbo, когда пакет общедоступный и является общим для всех пользователей. Если пользователь устанавливает более новую версию общедоступного пакета, это не повлияет на общедоступный пакет, но такой пользователь будет иметь доступ к более новой версии.

  • Сценарий R, выполняющийся в SQL Server, может использовать только пакеты, установленные в библиотеке экземпляра по умолчанию. SQL Server не может загружать пакеты из внешних библиотек, даже если эти библиотеки находятся на том же компьютере. В их число входят библиотеки R, установленные с другими продуктами Майкрософт.

  • В защищенной среде SQL Server может потребоваться отказаться от следующих пакетов:

    • пакеты, которым требуется доступ к сети;
    • пакеты, которым требуется доступ к файловой системе с повышенными правами;
    • пакеты, используемые для веб-разработки или других задач, малоэффективных в SQL Server.

Установка пакета sqlmlutils на клиентском компьютере

Сначала пакет sqlmlutils необходимо установить на клиентском компьютере, который используется для подключения к SQL Server.

Пакет sqlmlutils зависит от пакета odbc, а odbc — от ряда других пакетов. Следующие процедуры позволяют установить все эти пакеты в правильном порядке.

Установка пакета sqlmlutils в сетевом режиме

Если у клиентского компьютера есть доступ к Интернету, вы можете скачать и установить пакет sqlmlutils и его зависимые пакеты по сети.

  1. Скачайте на клиентский компьютер последнюю версию файла sqlmlutils (.zip для Windows, .tar.gz для Linux) с сайта https://github.com/microsoft/sqlmlutils/releases. Не разворачивайте файл.

  2. Откройте командную строку и выполните следующие команды для установки пакетов odbc и sqlmlutils. Измените путь к скачанному файлу sqlmlutils. Пакет odbc находится в сети и установлен.

    R.exe -e "install.packages('odbc', type='binary')"
    R.exe CMD INSTALL sqlmlutils_1.0.0.zip
    
    R.exe -e "install.packages('odbc')"
    R.exe CMD INSTALL sqlmlutils_1.0.0.tar.gz
    

Установка пакета sqlmlutils в автономном режиме

Если у клиентского компьютера нет подключения к Интернету, вам нужно заранее скачать пакеты odbc и sqlmlutils на компьютере с доступом к Интернету. Затем файлы можно скопировать в папку на клиентском компьютере и установить пакеты в автономном режиме.

У пакета odbc есть несколько зависимых пакетов, но при определении всех зависимостей для пакета возникают сложности. Рекомендуется воспользоваться miniCRAN и создать папку локального репозитория для пакета, включающего все зависимые пакеты. Дополнительные сведения см. в статье Create a local R package repository using miniCRAN (Создание локального репозитория пакетов R с помощью miniCRAN).

Пакет sqlmlutils состоит из одного файла, который можно скопировать на клиентский компьютер и установить.

На компьютере с доступом к Интернету

  1. Установите miniCRAN. Дополнительные сведения см. в разделе об установке miniCRAN.

  2. В RStudio выполните следующий сценарий R, чтобы создать локальный репозиторий пакета odbc. В этом примере предполагается, что репозиторий будет создан в папке odbc.

    library("miniCRAN")
    CRAN_mirror <- c(CRAN = "https://cran.microsoft.com")
    local_repo <- "odbc"
    pkgs_needed <- "odbc"
    pkgs_expanded <- pkgDep(pkgs_needed, repos = CRAN_mirror);
    
    makeRepo(pkgs_expanded, path = local_repo, repos = CRAN_mirror, type = "win.binary", Rversion = "3.5");
    
    library("miniCRAN")
    CRAN_mirror <- c(CRAN = "https://cran.microsoft.com")
    local_repo <- "odbc"
    pkgs_needed <- "odbc"
    pkgs_expanded <- pkgDep(pkgs_needed, repos = CRAN_mirror);
    
    makeRepo(pkgs_expanded, path = local_repo, repos = CRAN_mirror, type = "source", Rversion = "3.5");
    

    В качестве значения Rversion укажите версию R, установленную в SQL Server. Чтобы проверить установленную версию, используйте следующую команду T-SQL.

    EXECUTE sp_execute_external_script @language = N'R'
     , @script = N'print(R.version)'
    
  3. Скачайте последнюю версию файла sqlmlutils (.zip для Windows, .tar.gz для Linux) с сайта https://github.com/microsoft/sqlmlutils/releases. Не разворачивайте файл.

  4. Скопируйте всю папку репозитория odbc и файл sqlmlutils на клиентский компьютер.

На клиентском компьютере, используемом для подключения к SQL Server:

  1. Откройте командную строку.

  2. Выполните следующие команды, чтобы установить odbc и sqlmlutils. Измените полные пути к папке репозитория odbc и файлу sqlmlutils, скопированным на этот компьютер.

    R.exe -e "install.packages('odbc', repos='odbc')"
    R.exe CMD INSTALL sqlmlutils_1.0.0.zip
    
    R.exe -e "install.packages('odbc', repos='odbc')"
    R.exe CMD INSTALL sqlmlutils_1.0.0.tar.gz
    

Добавление пакета R в SQL Server

В следующем примере вы добавите пакет glue в SQL Server.

Добавление пакета в сетевом режиме

Если клиентский компьютер, используемый для подключения к SQL Server, имеет доступ к Интернету, с помощью пакета sqlmlutils можно найти пакет glue и все зависимости через Интернет, а затем удаленно установить пакет в экземпляре SQL Server.

  1. На клиентском компьютере откройте RStudio и создайте файл сценария R.

  2. Выполните следующий сценарий R для установки пакета glue с помощью пакета sqlmlutils. Подставьте собственные значения для подключения к базе данных SQL Server.

    library(sqlmlutils)
    connection <- connectionInfo(
      server   = "server",
      database = "database",
      uid      = "username",
      pwd      = "password")
    
    sql_install.packages(connectionString = connection, pkgs = "glue", verbose = TRUE, scope = "PUBLIC")
    

    Совет

    Параметр scope может иметь значение PUBLIC или PRIVATE. Общая область полезна администратору базы данных для установки пакетов, которые могут использовать все пользователи. В частной области пакет доступен только пользователю, который его установил. Если область не указана, по умолчанию используется область PRIVATE.

Добавление пакета в автономном режиме

Если у клиентского компьютера нет подключения к Интернету, воспользуйтесь miniCRAN, чтобы скачать пакет glue на компьютере, имеющем доступ к Интернету. Затем пакет копируется на клиентский компьютер для установки в автономном режиме. Сведения об установке miniCRAN см. в разделе Установка miniCRAN.

На компьютере с доступом к Интернету

  1. Выполните следующий сценарий R для создания локального репозитория для пакета glue. В этом примере папка репозитория создается в папке c:\downloads\glue.

    library("miniCRAN")
    CRAN_mirror <- c(CRAN = "https://cran.microsoft.com")
    local_repo <- "c:/downloads/glue"
    pkgs_needed <- "glue"
    pkgs_expanded <- pkgDep(pkgs_needed, repos = CRAN_mirror);
    
    makeRepo(pkgs_expanded, path = local_repo, repos = CRAN_mirror, type = "win.binary", Rversion = "3.5");
    
    library("miniCRAN")
    CRAN_mirror <- c(CRAN = "https://cran.microsoft.com")
    local_repo <- "c:/downloads/glue"
    pkgs_needed <- "glue"
    pkgs_expanded <- pkgDep(pkgs_needed, repos = CRAN_mirror);
    
    makeRepo(pkgs_expanded, path = local_repo, repos = CRAN_mirror, type = "source", Rversion = "3.5");
    

    В качестве значения Rversion укажите версию R, установленную в SQL Server. Чтобы проверить установленную версию, используйте следующую команду T-SQL.

    EXECUTE sp_execute_external_script @language = N'R'
     , @script = N'print(R.version)'
    
  2. Скопируйте всю папку репозитория glue (c:\downloads\glue) на клиентский компьютер. Например, скопируйте ее в папку c:\temp\packages\glue.

На клиентском компьютере

  1. Откройте RStudio и создайте файл сценария R.

  2. Выполните следующий сценарий R для установки пакета glue с помощью пакета sqlmlutils. Замените сведения о подключении к базе данных SQL Server (если не используется проверка подлинности Windows, добавьте параметры uid и pwd).

    library(sqlmlutils)
    connection <- connectionInfo(
      server= "yourserver",
      database = "yourdatabase")
    localRepo = "c:/temp/packages/glue"
    
    sql_install.packages(connectionString = connection, pkgs = "glue", verbose = TRUE, scope = "PUBLIC", repos=paste0("file:///",localRepo))
    

    Совет

    Параметр scope может иметь значение PUBLIC или PRIVATE. Общая область полезна администратору базы данных для установки пакетов, которые могут использовать все пользователи. В частной области пакет доступен только пользователю, который его установил. Если область не указана, по умолчанию используется область PRIVATE.

Использование пакета

После установки пакет glue можно использовать в сценарии R в SQL Server с командой T-SQL sp_execute_external_script.

  1. Откройте Azure Data Studio и подключитесь к своей базе данных SQL Server.

  2. Выполните следующую команду:

    EXECUTE sp_execute_external_script @language = N'R'
        , @script = N'
    library(glue)
    
    name <- "Fred"
    birthday <- as.Date("2020-06-14")
    text <- glue(''My name is {name} '',
    ''and my birthday is {format(birthday, "%A, %B %d, %Y")}.'')
    
    print(text)
          ';
    

    Результаты

    My name is Fred and my birthday is Sunday, June 14, 2020.
    

Удаление пакета

Чтобы удалить пакет glue, выполните следующий сценарий R. Используйте ту же переменную connection, которая была определена ранее.

sql_remove.packages(connectionString = connection, pkgs = "glue", scope = "PUBLIC")

Дополнительные функции sqlmlutils

Пакет sqlmlutils содержит ряд функций для управления пакетами R, а также для создания, выполнения хранимых процедур и запросов в SQL Server и управления ими. Дополнительные сведения см. в файле сведений sqlmlutils для R.

Сведения о любых функциях sqlmlutils можно получить с помощью функции справки R или оператора ?. Например:

library(sqlmlutils)
help("sql_install.packages")

Следующие шаги

  • Сведения об установленных пакетах R см. в статье Get R package information (Получение сведений о пакете R).
  • Сведения о работе с пакетами R см. в статье Tips for using R packages (Советы по использованию пакетов R).
  • Сведения об установке пакетов Python см. в статье Install Python packages with pip (Установка пакетов Python с помощью pip).
  • Дополнительные сведения о службах машинного обучения SQL Server см. в статье What is SQL Server Machine Learning Services (Python и R)? (Что такое службы машинного обучения SQL Server (Python и R)?)