Uso de sparklyr en clústeres de macrodatos de SQL Server
Se aplica a:
SQL Server 2019 (15.x)
Sparklyr proporciona una interfaz de R para Apache Spark. Sparklyr es una forma popular para que los desarrolladores de R usen Spark. En este artículo se describe cómo usar sparklyr en Clústeres de macrodatos de SQL Server 2019 mediante RStudio.
Prerequisites
Instalación de R y RStudio Desktop
Instale y configure RStudio Desktop con los pasos siguientes:
Si ejecuta un cliente Windows, descargue e instale R 3.6.3. Además, descargue e instale RTools 3.5. Asegúrese de configurar la carpeta binaria RTools en la variable de entorno PATH.
Advertencia
Se ha comprobado que la versión 4.x de R y las versiones de sparklyr distintas de la especificada a continuación no funcionan a partir de los clústeres de macrodatos de SQL Server CU13.
Descargue e instale RStudio Desktop. Opcionalmente, todos los ejemplos funcionan en el shell de R.
Una vez finalizada la instalación, ejecute los comandos siguientes dentro de RStudio Desktop o del shell de R para instalar los paquetes necesarios. Cuando se le pida, confirme para compilar paquetes desde el origen.
install.packages("devtools")
devtools::install_github('rstudio/sparklyr', ref = 'v1.7.0', upgrade = 'always', repos = 'https://cran.microsoft.com/snapshot/2021-06-11/')
Conexión a Spark en un clúster de macrodatos
Puede usar sparklyr para conectarse desde un cliente al clúster de macrodatos mediante Livy y la puerta de enlace de HDFS/Spark.
En RStudio, cree un script de R y conéctese a Spark como en el ejemplo siguiente:
Sugerencia
Para los valores <AZDATA_USERNAME> y <AZDATA_PASSWORD>, use el nombre de usuario y la contraseña que haya establecido durante la implementación del clúster de macrodatos.
A partir de SQL Server 2019 CU5, al implementar un nuevo clúster con autenticación básica, todos los puntos de conexión, incluido el uso de puerta de enlace AZDATA_USERNAME y AZDATA_PASSWORD. Los puntos de conexión de los clústeres que se actualizan a CU5 continúan usando root como nombre de usuario para conectarse al punto de conexión de puerta de enlace. Este cambio no se aplica a las implementaciones que utilizan la autenticación de Active Directory. Consulte Credenciales para acceder a los servicios a través del punto de conexión de puerta de enlace en las notas de la versión.
Para los valores <IP> y <PORT>, vea la documentación sobre cómo conectarse a un clúster de macrodatos.
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)
Ejecución de consultas de sparklyr
Después de conectarse a Spark, puede ejecutar sparklyr. En el ejemplo siguiente se realiza una consulta en el conjunto de datos iris mediante sparklyr:
iris_tbl <- copy_to(sc, iris)
iris_count <- dbGetQuery(sc, "SELECT COUNT(*) FROM iris")
iris_count
Cálculos de R distribuidos
Una característica de sparklyr es la capacidad de distribuir cálculos de R con spark_apply.
Como los clústeres de macrodatos usan conexiones Livy, debe establecer packages = FALSE en la llamada a spark_apply. Para obtener más información, vea la sección sobre Livy de la documentación de sparklyr sobre cálculos de R distribuidos. Con esta configuración, solo puede usar los paquetes de R que ya estén instalados en el clúster de Spark en el código de R que se pasa a spark_apply. En el ejemplo siguiente se muestra esta funcionalidad:
iris_tbl %>% spark_apply(function(e) nrow(e), names = "nrow", group_by = "Species", packages = FALSE)
Pasos siguientes
Vea ¿Qué son los Clústeres de macrodatos de SQL Server 2019? para obtener más información sobre los clústeres de macrodatos.