Introdução ao SQL Server R Services 2016

Fala galera, uma das novidades do SQL Server 2016 é a possibilidade de executar scripts da linguagem R internamente na plataforma de dados da Microsoft. Isso avança mais um passo dentro da abordagem deles para a área de Big Data e Data Science, que já possui coisas como o HDInsight, PowerBI, Datazen, Data Lake e outros. Aqui vou mostrar como instalar os pré-requisitos e configurar o R dentro do CTP3 – Community Technology
Preview – do SQL Server 2016. Pode ser que isso mude até a versão final, mas até lançarem, dá pra brincar com o R seguindo estes passos…

 

Pré-Requisitos

SQL Server 2016 CTP 3 (2.7GB)

Revolution R Open 3.2.2 for Revolution R Enterprise 7.5.0 (60MB)

Revolution R Enterprise 7.5.0 (RRE-7.5.0) (470MB)

Instalação

O primeiro passo é instalar o SQL Server 2016 CTP 3, lembrando de habilitar o recurso de Advanced Analytics Extensions.

Depois de concluir a instalação, é necessário instalar o Revolution R Open 3.2.2 for Revolution R Enterprise 7.5.0 e em seguida Revolution R Enterprise 7.5. Estas ferramentas são, respectivamente, a distribuição do R com o runtime e algumas bibliotecas, e, um grupo de melhorias nos pacotes que oferece suporte de alta performance á diversas origens de dados.


Da parte de instalação é só isso, agora faltam só mais alguns passos de configuração e o R começará a responder de dentro do SQL Server.

Configuração

Pode parecer complexo pra quem vê a primeira vez, mas é bem simples. A primeira coisa é habilitar a execução de scripts externos no SQL Server que por padrão, vem desabilitado. Você pode verificar isso chamando o código SP_CONFIGURE.

Para habilitar, execute o código abaixo:

Exec sp_configure 'external scripts enabled', 1;
reconfigure;

O resultado deve ter mudado a linha do External Scripts Enabled, que agora está habilitado.

Depois de habilitar a execução de scripts externos no SQL Server, é necessário registrar um daqueles serviços externos que foram instalados, é o serviço do Revolution R Open. Para isso, abra um prompt de comando com privilégios de admin e vé até o caminho que fez a instalação do RRO. No meu caso foi neste caminho (provavelmente você precisará editar isso para que funcione no seu servidor).

c:\Program Files\RRO\RRO-3.2.2-for-RRE-7.5.0\R-3.2.2\
library\RevoScaleR\rxLibs\x64>

Procure um executável chamado registerRext.exe e passe a instrução de instalar. Como eu renomeei a minha instância para SQL2016, eu também precisei passar o nome da instância para o executavel. Ficou assim:

c:\Program Files\RRO\RRO-3.2.2-for-RRE-7.5.0\R-3.2.2\
library\RevoScaleR\rxLibs\x64>registerRext.exe /install /instance:SQL2016

 

Ele executa um monte de instalações e registros internos, olha o resultado do prompt de comando depois dos registros:

Source directory to pick the RExtension binaries determined to be “c:\Program Files\RRO\RRO-3.2.2-for-RRE-7.5.0\R-3.2.2\library\RevoScaleR\rxLibs\x64\”.

Connecting to SQL server…

Sql server binn directory is “C:\Program Files\Microsoft SQL Server\MSSQL13.SQL2016\MSSQL\Binn”.

Sql server log directory is “C:\Program Files\Microsoft SQL Server\MSSQL13.SQL2016\MSSQL\Log”.

Creating user account pool…

Creating user accounts.

Processing 20/20

Adding firewall rule for user account pool.

***WARNING: For security reasons, it is recommended to block network access for

R processes executing under local user accounts. It appears that Windows Firewall is currently disabled for the Network Profiles DOMAIN, PRIVATE. Please enable Windows Firewall or use another firewall to block network access

Creating working directory for user accounts.

Saving user account configuration.

User account pool with 20 users created.

R installation found at C:\Program Files\RRO\RRO-3.2.2-for-RRE-7.5.0\R-3.2.2.MPI installation found at C:\Program Files\Microsoft MPI.

Settings file C:\Program Files\Microsoft SQL Server\MSSQL13.SQL2016\MSSQL\Binn\rlauncher.config created.

Stopping service MSSQLLaunchpad$SQL2016…

Stopping service MSSQL$SQL2016…

Copied xp_callrre.dll from c:\Program Files\RRO\RRO-3.2.2-for-RRE-7.5.0\R-3.2.2\library\RevoScaleR\rxLibs\x64\ to C:\Program Files\Microsoft SQL Server\MSSQL13.SQL2016\MSSQL\Binn.

Copied RLauncher.dll from c:\Program Files\RRO\RRO-3.2.2-for-RRE-7.5.0\R-3.2.2\library\RevoScaleR\rxLibs\x64\ to C:\Program Files\Microsoft SQL Server\MSSQL13.SQL2016\MSSQL\Binn.

Starting service MSSQLLaunchpad$SQL2016…

Connecting to SQL server…

Created role db_rrerole

Added extended stored procedure xp_ScaleR_init_job.

Granted Execute for extended stored procedure xp_ScaleR_init_job to db_rrerole.

Added extended stored procedure xp_ScaleR_queue_job.

Granted Execute for extended stored procedure xp_ScaleR_queue_job to db_rrerole.

Added extended stored procedure xp_ScaleR_retrieve_results.

Granted Execute for extended stored procedure xp_ScaleR_retrieve_results to db_rrerole.

Added extended stored procedure xp_ScaleR_query_status.

Granted Execute for extended stored procedure xp_ScaleR_query_status to db_rrerole.

Added extended stored procedure xp_ScaleR_cancel_job.

Granted Execute for extended stored procedure xp_ScaleR_cancel_job to db_rrerole.

Added extended stored procedure xp_ScaleR_cleanup.

Granted Execute for extended stored procedure xp_ScaleR_cleanup to db_rrerole.

R extensibility installed successfully.

Agora só falta reiniciar o serviço do SQL Server.

Primeira execução!

Agora é momento de abrir o SQL Server 2016 e executar o seu código em R. Peguei um código já criado aqui no blog anteriormente (Trabalhando com cores no R), e reaproveitei. Execute o código abaixo:

EXECUTE   sp_execute_external_script
 @language = N'R'               , @script = N'OutputDataSet <- InputDataSet
             color <- colorRampPalette(c("red","yellow", "green"))               color(10)
             a <- c(1:10)               jpeg("C:/TEMP/Barras.jpg")
             barplot(a, col=color(10), main="R no SQL Server 2016")               dev.off()'
 , @input_data_1 = N'SELECT ''R no SQL Server 2016'' as Col'               WITH RESULT SETS ((col varchar(30) not null));
go

 

E vá até sua pasta C:\Temp e pocure o arquivo Barras.jpg. Se tudo deu certo, você terá um gráfico como este abaixo gerado pelo R diretamente do seu SQL Server 2016.

Agora é explorar as funcionalidades e possibilidades do R, e integrar isso ao seu ambiente. Fique atento que mais posts sobre R dentro do SQL Server serão publicados em breve!

Links de Referência

Todas estas configurações acima foram consolidadas e tiradas destes links de referências abaixo.

Installing SQL Server R Services

Install Advanced Analytics Extensions

Install R Packages and Providers for SQL Server R Services

Configure and Manage Advanced Analytics Extensions

Sobre Diego Nogare 344 Artigos
Diego Nogare é Gerente Técnico de Engenharia de Machine Learning no Itaú-Unibanco. Também é professor em programas de pós graduação no Mackenzie e na FIAP, em São Paulo. Foi nomeado como Microsoft MVP por 11 anos seguidos, e hoje faz parte do programa Microsoft Regional Director.