Usar o sparklyr em clusters de Big Data do SQL Server

Aplica-se a: SQL Server 2019 (15.x)

Importante

O complemento Clusters de Big Data do Microsoft SQL Server 2019 será desativado. O suporte para Clusters de Big Data do SQL Server 2019 será encerrado em 28 de fevereiro de 2025. Todos os usuários existentes do SQL Server 2019 com Software Assurance terão suporte total na plataforma e o software continuará a ser mantido por meio de atualizações cumulativas do SQL Server até esse momento. Para obter mais informações, confira a postagem no blog de anúncio e as opções de Big Data na plataforma do Microsoft SQL Server.

O Sparklyr fornece uma interface R para o Apache Spark. O Sparklyr é uma maneira popular de os desenvolvedores de R usarem o Spark. Este artigo descreve como usar o sparklyr em um Clusters de Big Data do SQL Server 2019 usando o RStudio.

Prerequisites

Instalar o R e o RStudio para Desktop

Instale e configure o RStudio Desktop com as seguintes etapas:

  1. Se a execução for feita em um cliente Windows, baixe e instale o R 3.6.3. Além disso, baixe e instale o RTools 3.5. Configure a pasta binária RTools na variável de ambiente PATH.

    Aviso

    As versões do R 4.x e do sparklyr diferentes da especificada abaixo são verificadas de modo a não funcionar por meio dos Cluster de Big Data do SQL Server CU13.

  2. Baixe e instale o RStudio Desktop. Opcionalmente, todos os exemplos funcionam no shell do R.

  3. Após a conclusão da instalação, execute os seguintes comandos dentro do RStudio Desktop ou shell R para instalar os pacotes necessários. Quando solicitado, confirme a compilação de pacotes da origem.

install.packages("devtools")
devtools::install_github('rstudio/sparklyr', ref = 'v1.7.0', upgrade = 'always', repos = 'https://cran.microsoft.com/snapshot/2021-06-11/')

Conectar-se ao Spark em um cluster de Big Data

Você pode usar o sparklyr para conectar-se de um cliente ao cluster de Big Data usando o Livy e o gateway do HDFS/Spark.

No RStudio, crie um script do R e conecte-se ao Spark como neste exemplo:

Dica

Para os valores <AZDATA_USERNAME> e <AZDATA_PASSWORD>, use o nome de usuário e a senha definidos durante a implantação do cluster de Big Data.

A partir do SQL Server 2019 (15.x) CU 5, quando você implanta um novo cluster com a autenticação básica, todos os pontos de extremidade, incluindo o gateway, usam AZDATA_USERNAME e AZDATA_PASSWORD. Os pontos de extremidade em clusters que são atualizados para CU 5 continuam usando root como o nome de usuário para se conectar ao ponto de extremidade do gateway. Essa alteração não se aplica às implantações que usam a autenticação do Active Directory. Confira Credenciais para acessar serviços por meio do ponto de extremidade do gateway nas notas sobre a versão.

Para obter os valores de <IP> e <PORT>, confira a documentação sobre conectar-se a um de cluster de Big Data.

library(sparklyr)
library(dplyr)
library(DBI)

#Specify the Knox username and password
config <- livy_config(user = "<AZDATA_USERNAME>", password = "<AZDATA_PASSWORD>")

httr::set_config(httr::config(ssl_verifypeer = 0L, ssl_verifyhost = 0L))

sc <- spark_connect(master = "https://<IP>:<PORT>/gateway/default/livy/v1",
                    method = "livy",
                    config = config)

Executar consultas do sparklyr

Depois de se conectar ao Spark, você pode executar o sparklyr. O exemplo a seguir executa uma consulta no conjunto de dados iris usando o sparklyr:

iris_tbl <- copy_to(sc, iris)

iris_count <- dbGetQuery(sc, "SELECT COUNT(*) FROM iris")

iris_count

Computações do R distribuídas

Um recurso do sparklyr é a capacidade de distribuir computações do R com spark_apply.

Como os clusters de Big Data usam conexões Livy, você deve definir packages = FALSE na chamada para spark_apply. Para obter mais informações, confira a seção Livy da documentação do sparklyr sobre computações do R distribuídas. Com essa configuração, você só pode usar os pacotes do R que já estão instalados em seu cluster do Spark no código R passado para spark_apply. O seguinte exemplo demonstra esta funcionalidade:

iris_tbl %>% spark_apply(function(e) nrow(e), names = "nrow", group_by = "Species", packages = FALSE)

Próximas etapas

Para obter mais informações sobre clusters de Big Data, confira O que são Clusters de Big Data do SQL Server 2019.