Usare sparklyr in un cluster Big Data di SQL Server

Si applica a: SQL Server 2019 (15.x)

Importante

Il componente aggiuntivo per i cluster Big Data di Microsoft SQL Server 2019 verrà ritirato. Il supporto per i cluster Big Data di SQL Server 2019 terminerà il 28 febbraio 2025. Tutti gli utenti esistenti di SQL Server 2019 con Software Assurance saranno completamente supportati nella piattaforma e fino a quel momento il software continuerà a ricevere aggiornamenti cumulativi di SQL Server. Per altre informazioni, vedere il post di blog relativo all'annuncio e Opzioni per i Big Data nella piattaforma Microsoft SQL Server.

Sparklyr offre un'interfaccia R per Apache Spark e costituisce quindi lo strumento più usato dagli sviluppatori R per usare Spark. Questo articolo descrive come usare sparklyr in un cluster Big Data di SQL Server 2019 tramite RStudio.

Prerequisiti

Installare R e RStudio Desktop

Installare e configurare RStudio Desktop seguendo questa procedura:

  1. Se l'esecuzione avviene in un client Windows, scaricare e installare R 3.6.3. Inoltre, scaricare e installare RTools 3.5. Assicurarsi di configurare la cartella binaria RTools nella variabile di ambiente PATH.

    Avviso

    È accertato che la versione 4.x di R e le versioni di sparklyr diverse da quella specificata di seguito non funzionano a partire dai cluster Big Data di SQL Server CU13.

  2. Scaricare e installare RStudio Desktop. Facoltativamente, tutti gli esempi funzionano nella shell R.

  3. Al termine dell'installazione, eseguire i comandi seguenti all'interno di RStudio Desktop o della shell R per installare i pacchetti necessari. Quando richiesto, confermare la compilazione dei pacchetti dall'origine.

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

Connettersi a Spark in un cluster Big Data

È possibile usare sparklyr per connettere un client al cluster Big Data usando Livio e il gateway HDFS/Spark.

In RStudio creare uno script R e connettersi a Spark come nell'esempio seguente:

Suggerimento

Per i valori <AZDATA_USERNAME> e <AZDATA_PASSWORD>, usare il nome utente e la password impostati durante la distribuzione del cluster Big Data.

A partire da SQL Server 2019 (15.x) CU 5, quando si distribuisce un nuovo cluster con l'autenticazione di base, tutti gli endpoint, incluso il gateway, usano AZDATA_USERNAME e AZDATA_PASSWORD. Gli endpoint nei cluster aggiornati a CU5 continuano a usare root come nome utente per la connessione all'endpoint del gateway. Questa modifica non si applica alle distribuzioni che usano l'autenticazione Active Directory. Vedere Credenziali per l'accesso ai servizi tramite l'endpoint del gateway nelle note sulla versione.

Per i valori <IP> e <PORT>, vedere la documentazione relativa alla connessione a un cluster 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)

Eseguire query sparklyr

Dopo aver effettuato la connessione a Spark, è possibile eseguire sparklyr. L'esempio seguente esegue una query sul set di dati iris usando sparklyr:

iris_tbl <- copy_to(sc, iris)

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

iris_count

Calcoli R distribuiti

Sparklyr offre la possibilità di distribuire calcoli R tramite spark_apply.

I cluster Big Data usano connessioni Livio ed è quindi necessario impostare packages = FALSE nella chiamata a spark_apply. Per altre informazioni, vedere la sezione su Livy della documentazione di sparklyr relativa ai calcoli R distribuiti. Con questa impostazione, nel codice R passato a spark_apply è possibile usare solo i pacchetti R già installati nel cluster Spark. Nell'esempio seguente viene illustrata questa funzionalità:

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

Passaggi successivi

Per altre informazioni sui cluster Big Data, vedere Informazioni sui cluster Big Data di SQL Server 2019.