Compartir vía


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

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

Importante

El complemento Clústeres de macrodatos de Microsoft SQL Server 2019 se va a retirar. La compatibilidad con Clústeres de macrodatos de SQL Server 2019 finalizará el 28 de febrero de 2025. Todos los usuarios existentes de SQL Server 2019 con Software Assurance serán totalmente compatibles con la plataforma, y el software se seguirá conservando a través de actualizaciones acumulativas de SQL Server hasta ese momento. Para más información, consulte la entrada de blog sobre el anuncio y Opciones de macrodatos en la plataforma 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.

    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.

  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:

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 (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)

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.