Partilhar via


Configurar um cliente de ciência de dados para desenvolvimento R no SQL Server

Aplica-se a: SQL Server 2016 (13.x) SQL Server 2017 (14.x) SQL Server 2019 (15.x) no Linux

A integração com R está disponível no SQL Server 2016 ou versões posteriores quando inclui a opção da linguagem R numa instalação SQL Server 2016 R Services ou SQL Server Machine Learning Services (In-Database).

Observação

Atualmente, este artigo aplica-se apenas ao SQL Server 2016 (13.x), SQL Server 2017 (14.x), SQL Server 2019 (15.x) e SQL Server 2019 (15.x) apenas para Linux.

Para desenvolver e implementar soluções R para SQL Server, instale o Microsoft R Client na sua estação de trabalho de desenvolvimento para obter o RevoScaleR e outras bibliotecas R. A biblioteca RevoScaleR, que também é necessária na instância remota do SQL Server, coordena pedidos de cálculo entre ambos os sistemas.

Neste artigo, aprenda como configurar uma estação de trabalho de desenvolvimento de cliente R para que possa interagir com um SQL Server remoto habilitado para aprendizagem automática e integração com R. Depois de completar os passos deste artigo, terá as mesmas bibliotecas R que as do SQL Server. Também saberás como transferir cálculos de uma sessão R local para uma sessão R remota no SQL Server.

Componentes cliente-servidor

Para validar a instalação, pode usar a ferramenta RGUI incorporada conforme descrito neste artigo, ou ligar as bibliotecas ao RStudio ou a qualquer outro IDE que utilize normalmente.

Ferramentas comumente usadas

Quer seja um programador R novo em SQL, ou um programador SQL novo em R e análises dentro da base de dados, vai precisar tanto de uma ferramenta de desenvolvimento R como de um editor de consultas T-SQL, como o SQL Server Management Studio (SSMS), para exercer todas as capacidades da análise dentro da base de dados.

Para cenários simples de desenvolvimento R, podes usar o executável RGUI, incluído na distribuição base de R no MRO e SQL Server. Este artigo explica como usar RGUI tanto para sessões R locais como remotas. Para melhorar a produtividade, deve usar um IDE completo como RStudio ou Visual Studio.

O SSMS é um download separado, útil para criar e executar stored procedures no SQL Server, incluindo aqueles que contêm código R. Quase qualquer código R que escrevas num ambiente de desenvolvimento pode ser incorporado num procedimento armazenado. Podes seguir outros tutoriais para aprender sobre SSMS e R embebido.

1 - Instalar pacotes R

Os pacotes R da Microsoft estão disponíveis em vários produtos e serviços. Numa estação de trabalho local, recomendamos instalar o Microsoft R Client. O R Client fornece RevoScaleR, MicrosoftML,SQLRUtils e outros pacotes R.

  1. Descarregue o Cliente Microsoft R.

  2. No assistente de instalação, aceite ou altere o caminho de instalação padrão, aceite ou altere a lista de componentes e aceite os termos da licença do cliente Microsoft R.

    Quando a instalação termina, um ecrã de boas-vindas apresenta-lhe o produto e a documentação.

  3. Crie uma variável de ambiente de sistema MKL_CBWR para garantir uma saída consistente nos cálculos da Intel Math Kernel Library (MKL).

    • No Painel de Controle, selecione Sistema e Segurança>Sistema>Configurações Avançadas do Sistema>Variáveis de Ambiente.
    • Crie uma nova variável System chamada MKL_CBWR, com um valor definido como AUTO.

2 - Localizar executáveis

Localize e liste o conteúdo da pasta de instalação para confirmar que R.exe, RGUI e outros pacotes estão instalados.

  1. No Explorador de Ficheiros, abra a %ProgramFiles%\Microsoft\R Client\R_SERVER\bin pasta para confirmar a localização de R.exe.

  2. Abrir a subpasta x64 para confirmar RGUI. Vais usar esta ferramenta no próximo passo.

  3. Abra %ProgramFiles%\Microsoft\R Client\R_SERVER\library para rever a lista de pacotes instalados com o Cliente R, incluindo RevoScaleR, MicrosoftML e outros.

3 - Iniciar RGUI

Quando instalas o R com SQL Server, obténs as mesmas ferramentas de R que são padrão em qualquer instalação base do R, como RGui, Rterm, e assim por diante. Estas ferramentas são leves, úteis para verificar informações de pacotes e bibliotecas, executar comandos ou scripts ad hoc, ou passar por tutoriais. Pode usar estas ferramentas para obter informações sobre a versão R e confirmar a conectividade.

  1. Abra %ProgramFiles%\Microsoft\R Client\R_SERVER\bin\x64 e clique duas vezes no RGui para iniciar uma sessão R com um prompt de comandos do R.

    Quando inicia uma sessão R a partir de uma pasta de programa da Microsoft, vários pacotes, incluindo o RevoScaleR, carregam automaticamente.

  2. Introduza print(Revo.version) no prompt de comandos para devolver a informação da versão do pacote RevoScaleR. Deverias ter a versão 9.2.1 ou 9.3.0 para o RevoScaleR.

  3. Introduza search() no prompt R para uma lista de pacotes instalados.

    Informação de versão ao carregar o R

4 - Obter permissões SQL

No Cliente R, o processamento R está limitado a dois threads e dados em memória. Para processamento escalável usando múltiplos núcleos e grandes conjuntos de dados, pode transferir a execução (referida como contexto de computação) para os conjuntos de dados e o poder computacional de uma instância remota de SQL Server. Esta é a abordagem recomendada para integração de clientes com uma instância SQL Server de produção, e vai precisar de permissões e informações de ligação para que funcione.

Para se ligar a uma instância do SQL Server para executar scripts e carregar dados, deve ter um login válido no servidor da base de dados. Pode usar um login SQL ou autenticação integrada do Windows. Geralmente recomendamos que use autenticação integrada no Windows, mas usar o login SQL é mais simples em alguns cenários, especialmente quando o seu script contém cadeias de ligação a dados externos.

No mínimo, a conta usada para executar código deve ter permissão para ler as bases de dados com as quais está a trabalhar, além da permissão especial EXECUTAR QUALQUER SCRIPT EXTERNO. A maioria dos programadores também necessita de permissões para criar procedimentos armazenados e para escrever dados em tabelas que contenham dados de treino ou pontuação.

Peça ao administrador da base de dados para configurar as seguintes permissões para a sua conta, na base de dados onde usa R:

  • EXECUTE QUALQUER SCRIPT EXTERNO para correr um script R no servidor.
  • db_datareader privilégios para executar as consultas usadas para treinar o modelo.
  • db_datawriter para escrever dados de treino ou dados pontuados.
  • db_owner criar objetos como procedimentos armazenados, tabelas, funções. Também precisas db_owner para criar bases de dados de amostras e testes.

Se o seu código requer pacotes que não estejam instalados por defeito no SQL Server, combine com o administrador da base de dados que os pacotes sejam instalados com a instância. O SQL Server é um ambiente seguro e existem restrições sobre onde os pacotes podem ser instalados. Para mais informações, consulte Instalar novos pacotes R no SQL Server.

5 - Ligações de teste

Como passo de verificação, use RGUI e RevoScaleR para confirmar a conectividade ao servidor remoto. O SQL Server deve estar ativado para ligações remotas e deve ter permissões, incluindo um login de utilizador e uma base de dados para se ligar.

Os passos seguintes assumem a base de dados de demonstração, NYCTaxi_Sample e autenticação do Windows.

  1. Abre o RGUI na estação de trabalho do cliente. Por exemplo, vá para ~\Program Files\Microsoft SQL Server\140\R_SERVER\bin\x64, e faça duplo clique em RGui.exe para iniciá-lo.

  2. O RevoScaleR carrega automaticamente. Confirme que o RevoScaleR está operacional executando este comando: print(Revo.version)

  3. Introduza o script de demonstração que é executado no servidor remoto. Deve modificar o seguinte script de exemplo para incluir um nome válido para uma instância remota do SQL Server. Esta sessão começa como uma sessão local, mas a função rxSummary é executada na instância remota do SQL Server.

    # 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)
    

    Resultados:

    Este script liga-se a uma base de dados no servidor remoto, fornece uma consulta, cria uma instrução de contexto cc de cálculo para execução remota de código e depois fornece a função RevoScaleR rxSummary para devolver um resumo estatístico dos resultados da consulta.

      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. Obtenha e defina o contexto de computação. Depois de definir um contexto de computação, este mantém-se em vigor durante a sessão. Se não tiver a certeza se o cálculo é local ou remoto, execute o comando seguinte para descobrir. Resultados que especificam uma cadeia de ligação indicam um contexto de computação remota.

    # 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. Devolve informações sobre variáveis na fonte de dados, incluindo nome e tipo.

    rxGetVarInfo(data = inDataSource)
    

    Os resultados incluem 23 variáveis.

  6. Gerar um gráfico de dispersão para explorar se existem dependências entre duas variáveis.

    # 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")
    

    A seguinte captura de ecrã mostra a entrada e o resultado do gráfico de dispersão.

    Gráfico de dispersão no RGUI

Para projetos de desenvolvimento sustentados e sérios, deve instalar um ambiente de desenvolvimento integrado (IDE). As ferramentas SQL Server e as ferramentas R incorporadas não estão preparadas para desenvolvimento intensivo em R. Depois de tiveres código a funcionar, podes implementá-lo como procedimento armazenado para execução no SQL Server.

Aponte o seu IDE para as bibliotecas locais de R: base R, RevoScaleR, e assim por diante. A execução de cargas de trabalho num SQL Server remoto ocorre durante a execução do script, quando o seu script invoca um contexto de computação remota no SQL Server, acedendo a dados e operações nesse servidor.

RStudio

Ao usar o RStudio, pode configurar o ambiente para usar as bibliotecas e executáveis R que correspondem aos de um SQL Server remoto.

  1. Verifique as versões do pacote R instaladas no SQL Server. Para obter mais informações, consulte Obter informações sobre o pacote R.

  2. Instale o Microsoft R Client para adicionar o RevoScaleR e outros pacotes R, incluindo a distribuição base de R usada pela sua instância SQL Server. Escolha uma versão do mesmo nível ou inferior (os pacotes são compatíveis com versões anteriores) que ofereça as mesmas versões dos pacotes como no servidor. Para ver as versões dos pacotes instaladas no servidor, consulte Listar todos os pacotes R instalados.

  3. No RStudio, atualize o seu caminho R para apontar para o ambiente R que fornece o RevoScaleR, o Microsoft R Open e outros pacotes da Microsoft. Procure .%ProgramFiles%\Microsoft\R Client\R_SERVER\bin\x64

  4. Fecha e depois abre o RStudio.

Quando reabre o RStudio, o executável R do R Client é o motor R padrão.

Ferramentas R para Visual Studio (RTVS)

Se ainda não tiver um IDE preferido para R, recomendamos o R Tools para Visual Studio.

Liga-te ao SQL Server a partir do RTVS

Este exemplo utiliza Visual Studio 2017 Community Edition, com a carga de trabalho de ciência de dados instalada.

  1. No menu Ficheiro , selecione Novo e depois selecione Projeto.

  2. O painel da esquerda contém uma lista de modelos pré-instalados. Selecione R e selecione Projeto R. Na caixa do Nome, escreva dbtest e selecione OK.

    O Visual Studio cria uma nova pasta de projeto e um ficheiro de script predefinido, Script.R.

  3. Digite .libPaths() na primeira linha do ficheiro script e depois pressione CTRL + ENTER.

    O caminho atual da biblioteca R deve ser apresentado na janela interativa R .

  4. Selecione o menu R Tools e selecione Windows para ver uma lista de outras janelas específicas de R que pode mostrar no seu espaço de trabalho.

    • Veja ajuda sobre pacotes na biblioteca atual pressionando CTRL + 3.
    • Veja R variáveis no Explorador de Variáveis, pressionando CTRL + 8.

Próximos passos

Dois tutoriais diferentes incluem exercícios para que possas praticar a mudança do contexto de computação de uma instância local para uma remota do SQL Server.