Настройка клиента обработки и анализа данных для разработки на R в SQL ServerSet up a data science client for R development on SQL Server

Применимо к:Applies to: даSQL Server 2016 (13.x);SQL Server 2016 (13.x)yesSQL Server 2016 (13.x);SQL Server 2016 (13.x) и более поздние версииПрименимо к:Applies to: даSQL Server 2016 (13.x);SQL Server 2016 (13.x)yesSQL Server 2016 (13.x);SQL Server 2016 (13.x) and later

Интеграция R доступна в SQL Server 2016 и более поздних версиях, если включить параметр для языка R во время установки служб SQL Server 2016 R Services и служб машинного обучения SQL Server (в базе данных).R integration is available in SQL Server 2016 or later when you include the R language option in an SQL Server 2016 R Services or SQL Server Machine Learning Services (In-Database) installation.

Чтобы разрабатывать и развертывать решения R для SQL Server, установите Microsoft R Client на рабочей станции разработки для получения библиотеки RevoScaleR и других библиотек R.To develop and deploy R solutions for SQL Server, install Microsoft R Client on your development workstation to get RevoScaleR and other R libraries. Библиотека RevoScaleR, которая также требуется на удаленном экземпляре SQL Server, координирует вычислительные запросы между обеими системами.The RevoScaleR library, which is also required on the remote SQL Server instance, coordinates computing requests between both systems.

Из этой статьи вы узнаете, как настроить рабочую станцию разработки для клиента R, чтобы взаимодействовать с удаленным сервером SQL Server, на котором включены машинное обучение и интеграция R.In this article, learn how to configure an R client development workstation so that you can interact with a remote SQL Server enabled for machine learning and R integration. После выполнения действий, описанных в этой статье, у вас будут те же библиотеки R, что и на сервере SQL Server.After completing the steps in this article, you will have the same R libraries as those on SQL Server. Вы также узнаете, как отправлять вычисления из локального сеанса R в удаленный сеанс R на сервере SQL Server.You will also know how to push computations from a local R session to a remote R session on SQL Server.

Клиент-серверные компонентыClient-server components

Чтобы проверить установку, можно использовать встроенное средство RGUI, как описано в этой статье, либо связать библиотеки с RStudio или любой другой интегрированной средой разработки, которой вы обычно пользуетесь.To validate the installation, you can use built-in RGUI tool as described in this article, or link the libraries to RStudio or any another IDE that you normally use.

Примечание

Вместо установки клиентской библиотеки можно использовать автономный сервер в качестве полнофункционального клиента. Некоторые заказчики предпочитают эту конфигурацию для более глубокой работы сценария.An alternative to client library installation is using a standalone server as a rich client, which some customers prefer for deeper scenario work. Изолированный сервер полностью отделен от SQL Server, но поскольку он содержит те же библиотеки R, которые установлены на SQL Server, его можно использовать в качестве клиента для анализа SQL Server в базе данных.A standalone server is fully decoupled from SQL Server, but because it has the same R libraries, you can use it as a client for SQL Server in-database analytics. Его также можно использовать для решения задач, не связанных с SQL, в том числе для импорта и моделирования данных из других платформ данных.You can also use it for non-SQL-related work, including the ability to import and model data from other data platforms. Если вы устанавливаете изолированный сервер, исполняемый файл R можно найти в следующем расположении: C:\Program Files\Microsoft SQL Server\140\R_SERVER.If you install a standalone server, you can find the R executable at this location: C:\Program Files\Microsoft SQL Server\140\R_SERVER. Для проверки установки откройте консольное приложение R, чтобы выполнять команды с помощью исполняемого файла R.exe в этом расположении.To validate your installation, open an R console app to run commands using the R.exe at that location.

Часто используемые инструментыCommonly used tools

Независимо от того, являетесь ли вы разработчиком на R, который мало знаком с SQL, или разработчиком на SQL, который мало знаком с R и анализом в базе данных, для использования всех возможностей анализа в базе данных вам потребуется как средство разработки R, так и редактор запросов T-SQL, например SQL Server Management Studio (SSMS).Whether you are an R developer new to SQL, or a SQL developer new to R and in-database analytics, you will need both an R development tool and a T-SQL query editor such as SQL Server Management Studio (SSMS) to exercise all of the capabilities of in-database analytics.

Для простых сценариев разработки R можно использовать исполняемый файл RGUI, входящий в базовый дистрибутив R в MRO и SQL Server.For simple R development scenarios, you can use the RGUI executable, bundled in the base R distribution in MRO and SQL Server. В этой статье приводятся инструкции по использованию RGUI как для локальных, так и для удаленных сеансов R.This article explains how to use RGUI for both local and remote R sessions. Для повышения производительности следует использовать полнофункциональную интегрированную среду разработки, например RStudio или Visual Studio.For improved productivity, you should use a full-featured IDE such as RStudio or Visual Studio.

Набор средств SSMS необходимо скачать отдельно. Он подходит для создания и выполнения хранимых процедур в SQL Server, в том числе процедур, содержащих код R.SSMS is a separate download, useful for creating and running stored procedures on SQL Server, including those containing R code. Практически любой код R, написанный в среде разработки, можно внедрять в хранимые процедуры.Almost any R code that you write in a development environment can be embedded in a stored procedure. Вы можете ознакомиться с другими руководствами, чтобы узнать о SSMS и внедрении кода R.You can step through other tutorials to learn about SSMS and embedded R.

1. Установка пакетов R1 - Install R packages

Пакеты R Microsoft доступны в нескольких продуктах и службах.Microsoft's R packages are available in multiple products and services. На локальной рабочей станции рекомендуется установить Microsoft R Client.On a local workstation, we recommend installing Microsoft R Client. R Client предоставляет RevoScaleR, MicrosoftML, SQLRUtils и другие пакеты R.R Client provides RevoScaleR, MicrosoftML, SQLRUtils, and other R packages.

  1. Скачайте Microsoft R Client.Download Microsoft R Client.

  2. В мастере установки примите или измените путь установки по умолчанию, примите или измените список компонентов и примите условия лицензии Microsoft R Client.In the installation wizard, accept or change default installation path, accept or change the components list, and accept the Microsoft R Client license terms.

    После завершения установки появится экран приветствия с описанием продукта и списком документации.When installation is finished, a welcome screen introduces you to the product and documentation.

  3. Создайте системную переменную среды MKL_CBWR для получения согласованных выходных данных из вычислений Intel Math Kernel Library (MKL).Create an MKL_CBWR system environment variable to ensure consistent output on Intel Math Kernel Library (MKL) calculations.

    • На панели управления щелкните Система и безопасность > Система > Расширенные параметры системы > Переменные среды.In Control Panel, click System and Security > System > Advanced System Settings > Environment Variables.
    • Создайте системную переменную с именем MKL_CBWR и значением AUTO.Create a new System variable named MKL_CBWR, with a value set to AUTO.

2. Обнаружение исполняемых файлов2 - Locate executables

Найдите и выведите список файлов в папке установки, чтобы убедиться, что установлены R.exe, RGUI и другие пакеты.Locate and list the contents of the installation folder to confirm that R.exe, RGUI, and other packages are installed.

  1. В проводнике откройте папку C:\Program Files\Microsoft\R Client\R_SERVER\bin, чтобы проверить расположение файла R.exe.In File Explorer, open the C:\Program Files\Microsoft\R Client\R_SERVER\bin folder to confirm the location of R.exe.

  2. Откройте вложенную папку x64, чтобы проверить расположение RGUI.Open the x64 subfolder to confirm RGUI. Это средство будет использоваться в следующем шаге.You will use this tool in the next step.

  3. Откройте папку C:\Program Files\Microsoft\R Client\R_SERVER\library, чтобы просмотреть список пакетов, установленных с R Client, включая RevoScaleR, MicrosoftML и другие.Open C:\Program Files\Microsoft\R Client\R_SERVER\library to review the list of packages installed with R Client, including RevoScaleR, MicrosoftML, and others.

3. Запуск RGUI3 - Start RGUI

При установке R с SQL Server вы получаете стандартные инструменты R для базовой установки R, например RGui, Rterm и т. д.When you install R with SQL Server, you get the same R tools that are standard to any base installation of R, such as RGui, Rterm, and so forth. Они просты в использовании и позволяют проверять сведения о пакетах и библиотеках, запускать специальные команды или скрипты, а также применяются для выполнения инструкций в руководствах.These tools are lightweight, useful for checking package and library information, running ad hoc commands or script, or stepping through tutorials. С помощью этих средств можно получать сведения о версии R и проверять подключения.You can use these tools to get R version information and confirm connectivity.

  1. Откройте папку C:\Program Files\Microsoft\R Client\R_SERVER\bin\x64 и дважды щелкните RGui, чтобы запустить сеанс R с помощью командной строки R.Open C:\Program Files\Microsoft\R Client\R_SERVER\bin\x64 and double-click RGui to start an R session with an R command prompt.

    При запуске сеанса R из папки программ Майкрософт автоматически загрузятся несколько пакетов, включая RevoScaleR.When you start an R session from a Microsoft program folder, several packages, including RevoScaleR, load automatically.

  2. В командной строке введите print(Revo.version), чтобы получить сведения о версии пакета RevoScaleR.Enter print(Revo.version) at the command prompt to return RevoScaleR package version information. Пакет RevoScaleR должен иметь версию 9.2.1 или 9.3.0.You should have version 9.2.1 or 9.3.0 for RevoScaleR.

  3. В командной строке R введите search() , чтобы получить список установленных пакетов.Enter search() at the R prompt for a list of installed packages.

    Сведения о версии при загрузке RVersion information when loading R

4. Получение разрешений SQL4 - Get SQL permissions

В R Client обработка R ограничена двумя потоками и данными в памяти.In R Client, R processing is capped at two threads and in-memory data. При масштабируемой обработке, в которой задействовано несколько ядер и больших наборов данных, выполнение (называемое контекстом вычисления) можно перенести в наборы данных и использовать вычислительную мощность удаленного экземпляра SQL Server.For scalable processing using multiple cores and large data sets, you can shift execution (referred to as compute context) to the data sets and computational power of a remote SQL Server instance. Это рекомендуемый подход к интеграции клиента с рабочим экземпляром SQL Server, и для его реализации потребуются разрешения и сведения о подключении.This is the recommended approach for client integration with a production SQL Server instance, and you will need permissions and connection information to make it work.

Чтобы подключиться к экземпляру SQL Server для выполнения сценариев и передачи данных, необходимо иметь допустимое имя входа на сервере базы данных.To connect to an instance of SQL Server to run scripts and upload data, you must have a valid login on the database server. Можно использовать либо имя входа SQL, либо встроенную проверку подлинности Windows.You can use either a SQL login or integrated Windows authentication. Обычно рекомендуется использовать встроенную проверку подлинности Windows, но в некоторых случаях проще использовать имя входа SQL, особенно если сценарий содержит строки подключения к внешним данным.We generally recommend that you use Windows integrated authentication, but using the SQL login is simpler for some scenarios, particularly when your script contains connection strings to external data.

У учетной записи, используемой для выполнения кода, должно быть разрешение на чтение для баз данных, с которыми вы работаете, а также специальное разрешение EXECUTE ANY EXTERNAL SCRIPT.At a minimum, the account used to run code must have permission to read from the databases you are working with, plus the special permission EXECUTE ANY EXTERNAL SCRIPT. Большинству разработчиков также требуются разрешения на создание хранимых процедур и на запись данных в таблицы, содержащие данные обучения или данные оценки.Most developers also require permissions to create stored procedures, and to write data into tables containing training data or scored data.

Попросите администратора базы данных настроить следующие разрешения для учетной записи в базе данных, в которой используется R:Ask the database administrator to configure the following permissions for your account, in the database where you use R:

  • EXECUTE ANY EXTERNAL SCRIPT для запуска скрипта R на сервере.EXECUTE ANY EXTERNAL SCRIPT to run R script on the server.
  • Привилегии db_datareader для выполнения запросов, используемых для обучения модели.db_datareader privileges to run the queries used for training the model.
  • db_datawriter для записи данных обучения и данных оценки.db_datawriter to write training data or scored data.
  • db_owner для создания таких объектов, как хранимые процедуры, таблицы и функции.db_owner to create objects such as stored procedures, tables, functions. Разрешение db_owner также потребуется для создания примеров баз данных и тестовых баз данных.You also need db_owner to create sample and test databases.

Если для кода требуются пакеты, которые по умолчанию не установлены в SQL Server, обратитесь к администратору базы данных, чтобы установить необходимые пакеты.If your code requires packages that are not installed by default with SQL Server, arrange with the database administrator to have the packages installed with the instance. SQL Server представляет собой защищенную среду, и существуют ограничения на места установки пакетов.SQL Server is a secured environment and there are restrictions on where packages can be installed. Дополнительные сведения см. в статье Installing New R Packages on SQL Server(Установка новых пакетов R в SQL Server).For more information, see Install new R packages on SQL Server.

5. Проверка подключения5 - Test connections

Для проверки подключения к удаленному серверу используйте RGUI и RevoScaleR.As a verification step, use RGUI and RevoScaleR to confirm connectivity to the remote server. SQL Server должен быть включен для удаленных подключений, а вам требуются разрешения, в том числе имя входа пользователя и база данных для подключения.SQL Server must be enabled for remote connections and you must have permissions, including a user login and a database to connect to.

При выполнений следующих действий используется демонстрационная база данных NYCTaxi_Sample и проверка подлинности Windows.The following steps assume the demo database, NYCTaxi_Sample, and Windows authentication.

  1. Откройте RGUI на клиентской рабочей станции.Open RGUI on the client workstation. Например, перейдите к папке ~\Program Files\Microsoft SQL Server\140\R_SERVER\bin\x64 и дважды щелкните файл RGui.exe, чтобы запустить его.For example, go to ~\Program Files\Microsoft SQL Server\140\R_SERVER\bin\x64 and double-click RGui.exe to start it.

  2. RevoScaleR загрузится автоматически.RevoScaleR loads automatically. Проверьте работоспособность RevoScaleR, выполнив следующую команду: print(Revo.version).Confirm RevoScaleR is operational by running this command: print(Revo.version)

  3. Введите демонстрационный скрипт, выполняемый на удаленном сервере.Enter demo script that executes on the remote server. Необходимо изменить следующий пример скрипта, включив в него допустимое имя для удаленного экземпляра SQL Server.You must modify the following sample script to include a valid name for a remote SQL Server instance. Этот сеанс начинается как локальный сеанс, но функция rxSummary выполняется на удаленном экземпляре SQL Server.This session begins as a local session, but the rxSummary function executes on the remote SQL Server instance.

    # Define a connection. Replace server with a valid server name.
    connStr <- "Driver=SQL Server;Server=<your-server-name>;Database=NYCTaxi_Sample;Trusted_Connection=true"
    
    # Specify the input data in a SQL query.
    sampleQuery <-"SELECT DISTINCT TOP(100) tip_amount FROM [dbo].nyctaxi_sample ORDER BY tip_amount DESC;"
    
    # Define a remote compute context based on the remote server.
    cc <-RxInSqlServer(connectionString=connStr)
    
    # Execute the function using the remote compute context.
    rxSummary(formula = ~ ., data = RxSqlServerData(sqlQuery=sampleQuery, connectionString=connStr), computeContext=cc)
    

    Результаты:Results:

    Этот скрипт подключается к базе данных на удаленном сервере, предоставляет запрос, создает инструкцию cc контекста вычисления для удаленного выполнения кода, а затем предоставляет функцию RevoScaleR rxSummary для возврата статистической сводки результатов запроса.This script connects to a database on the remote server, provides a query, creates a compute context cc instruction for remote code execution, then provides the RevoScaleR function rxSummary to return a statistical summary of the query results.

      Call:
    rxSummary(formula = ~., data = RxSqlServerData(sqlQuery = sampleQuery, 
        connectionString = connStr), computeContext = cc)
    
    Summary Statistics Results for: ~.
    Data: RxSqlServerData(sqlQuery = sampleQuery, connectionString = connStr) (RxSqlServerData Data Source)
    Number of valid observations: 100 
    
    Name       Mean   StdDev   Min Max ValidObs MissingObs
    tip_amount 63.245 31.61087 36  180 100      0     
    
  4. Получите и задайте контекст вычисления.Get and set the compute context. Заданный контекст вычисления действует в течение сеанса.Once you set a compute context, it remains in effect for the duration of the session. Если вы не уверены, что вычисления являются локальными или удаленными, выполните следующую команду, чтобы выяснить это. Результаты, указывающие строку соединения, означают удаленный контекст вычисления.If you aren't sure whether computation is local or remote, run the following command to find out. Results that specify a connection string indicate a remote compute context.

    # Return the current compute context.
    rxGetComputeContext()
    
    # Revert to a local compute context.
    rxSetComputeContext("local")
    rxGetComputeContext()
    
    # Switch back to remote.
    connStr <- "Driver=SQL Server;Server=<your-server-name>;Database=NYCTaxi_Sample;Trusted_Connection=true"
    cc <-RxInSqlServer(connectionString=connStr)
    rxSetComputeContext(cc)
    rxGetComputeContext()
    
  5. Получите сведения о переменных в источнике данных, включая имя и тип.Return information about variables in the data source, including name and type.

    rxGetVarInfo(data = inDataSource)
    

    Результаты содержат 23 переменные.Results include 23 variables.

  6. Создайте точечную диаграмму, чтобы определить наличие зависимостей между двумя переменными.Generate a scatter plot to explore whether there are dependencies between two variables.

    # Set the connection string. Substitute a valid server name for the placeholder.
    connStr <- "Driver=SQL Server;Server=<your database name>;Database=NYCTaxi_Sample;Trusted_Connection=true"
    
    # Specify a query on the nyctaxi_sample table.
    # For variables on each axis, remove nulls. Use a WHERE clause and <> to do this.
    sampleQuery <-"SELECT DISTINCT TOP 100 * from [dbo].[nyctaxi_sample] WHERE fare_amount <> '' AND  tip_amount <> ''"
    cc <-RxInSqlServer(connectionString=connStr)
    
    # Generate a scatter plot.
    rxLinePlot(fare_amount ~ tip_amount, data = RxSqlServerData(sqlQuery=sampleQuery, connectionString=connStr, computeContext=cc), type="p")
    

    На следующем снимке экрана показаны входные данные и выходные данные в виде точечной диаграммы.The following screenshot shows the input and scatter plot output.

    Точечная диаграмма в RGUIScatter plot in RGUI

Для поддержки долговременных и серьезных проектов разработки следует установить интегрированную среду разработки (IDE).For sustained and serious development projects, you should install an integrated development environment (IDE). Средства SQL Server и встроенные инструменты R не предназначены для интенсивной разработки на R.SQL Server tools and the built-in R tools are not equipped for heavy R development. Существующий рабочий код можно развернуть как хранимую процедуру для выполнения на SQL Server.Once you have working code, you can deploy it as a stored procedure for execution on SQL Server.

Укажите в IDE локальные библиотеки R: базовую библиотеку R, RevoScaleR и т. д.Point your IDE to the local R libraries: base R, RevoScaleR, and so forth. Выполнение рабочих нагрузок на удаленном SQL Server происходит во время выполнения скрипта, когда скрипт запускает удаленный контекст вычисления на SQL Server, получая доступ к данным и операциям на этом сервере.Running workloads on a remote SQL Server occurs during script execution, when your script invokes a remote compute context on SQL Server, accessing data and operations on that server.

RStudioRStudio

В RStudio можно настроить среду для использования библиотек и исполняемых файлов R, которые соответствуют своим эквивалентам на удаленном экземпляре SQL Server.When using RStudio, you can configure the environment to use the R libraries and executables that correspond to those on a remote SQL Server.

  1. Проверьте версии пакетов R, установленные на SQL Server.Check R package versions installed on SQL Server. Дополнительные сведения см. в статье Получение сведений о пакете R.For more information, see Get R package information.

  2. Установите Microsoft R Client или один из изолированных серверов, чтобы добавить RevoScaleR и другие пакеты R, включая базовый дистрибутив R, используемый экземпляром SQL Server.Install Microsoft R Client or one of the standalone server options to add RevoScaleR and other R packages, including the base R distribution used by your SQL Server instance. Выберите версию на том же уровне или ниже (пакеты поддерживают обратную совместимость), которая предоставляет те же версии пакетов, что и на сервере.Choose a version at the same level or lower (packages are backward compatible) that provides the same package versions as on the server. Сведения о версии см. в таблице в этой статье: Обновление компонентов R и Python.For version information, see the version map in this article: Upgrade R and Python components.

  3. В RStudio обновите путь R так, чтобы он указывал на среду R, предоставляющую RevoScaleR, Microsoft R Open и другие пакеты Майкрософт.In RStudio, update your R path to point to the R environment providing RevoScaleR, Microsoft R Open, and other Microsoft packages.

    • Для установки клиента R найдите папку C:\Program Files\Microsoft\R Client\R_SERVER\bin\x64.For an R Client installation, look for C:\Program Files\Microsoft\R Client\R_SERVER\bin\x64
    • Для установки изолированного сервера найдите папку C:\Program Files\Microsoft SQL Server\140\R_SERVER\Library или C:\Program Files\Microsoft SQL Server\130\R_SERVER\Library.For a standalone server, look for C:\Program Files\Microsoft SQL Server\140\R_SERVER\Library or C:\Program Files\Microsoft SQL Server\130\R_SERVER\Library
  4. Закройте, а затем откройте RStudio.Close and then open RStudio.

При повторном открытии RStudio, исполняемый файл R из R Client (или изолированного сервера) будет подсистемой R по умолчанию.When you reopen RStudio, the R executable from R Client (or standalone server) is the default R engine.

Инструменты R для Visual Studio (RTVS)R Tools for Visual Studio (RTVS)

Если у вас еще нет предпочтительной интегрированной среды разработки для R, рекомендуется воспользоваться инструментами R для Visual Studio.If you don't already have a preferred IDE for R, we recommend R Tools for Visual Studio.

Подключение к SQL Server из RTVSConnect to SQL Server from RTVS

В этом примере используется Visual Studio 2017 Community Edition с установленной рабочей нагрузкой обработки и анализа данных.This example uses Visual Studio 2017 Community Edition, with the data science workload installed.

  1. В меню Файл выберите пункт Создать, а затем — Проект.From the File menu, select New and then select Project.

  2. На левой панели находится список предварительно установленных шаблонов.The left-hand pane contains a list of preinstalled templates. Щелкните Rи выберите Проект R.Click R, and select R Project. В поле Имя введите dbtest, а затем нажмите кнопку ОК.In the Name box, type dbtest and click OK.

    Visual Studio создает папку проекта и файл скрипта по умолчанию Script.R.Visual Studio creates a new project folder and a default script file, Script.R.

  3. В первой строке файла скрипта введите .libPaths(), а затем нажмите клавиши CTRL+ВВОД.Type .libPaths() on the first line of the script file, and then press CTRL + ENTER.

    В интерактивном окне R должен появиться текущий путь к библиотеке R.The current R library path should be displayed in the R Interactive window.

  4. Щелкните меню Инструменты R и выберите Windows, чтобы просмотреть список других связанных с R окон, которые можно открыть в рабочей области.Click the R Tools menu and select Windows to see a list of other R-specific windows that you can display in your workspace.

    • Просмотрите справку по пакетам в текущей библиотеке, нажав клавиши CTRL+3.View help on packages in the current library by pressing CTRL + 3.
    • Просмотрите переменные R в обозревателе переменных, нажав клавиши CTRL+8.See R variables in the Variable Explorer, by pressing CTRL + 8.

Дальнейшие действияNext steps

Упражнения по переключению контекста вычисления с локального на удаленный экземпляр SQL Server можно найти в двух разных учебниках.Two different tutorials include exercises so that you can practice switching the compute context from local to a remote SQL Server instance.