Compartir vía


Uso de sparklyr en clústeres de macrodatos de SQL Server

Se aplica a: SQL Server 2019 (15.x)

Important

Los clústeres de macrodatos de Microsoft SQL Server 2019 se retiran. La compatibilidad con clústeres de macrodatos de SQL Server 2019 finalizó a partir del 28 de febrero de 2025. Para obtener más información, consulte la entrada de blog del anuncio y las opciones de macrodatos en la plataforma de Microsoft SQL Server.

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:

  1. 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.

    Warning

    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.

  2. Descargue e instale RStudio Desktop. Opcionalmente, todos los ejemplos funcionan en el shell de R.

  3. 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:

Tip

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 (15.x) CU 5, al implementar un nuevo clúster con autenticación básica todos los puntos de conexión incluida la puerta de enlace utilizan AZDATA_USERNAME y AZDATA_PASSWORD. Los puntos de conexión de los clústeres que se actualizan a CU 5 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)

Next steps

Vea ¿Qué son los Clústeres de macrodatos de SQL Server 2019? para obtener más información sobre los clústeres de macrodatos.