Definición y uso de contextos de cálculo (tutorial de SQL Server y RevoScaleR)
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores
Este es el tutorial 4 de la serie de tutoriales de RevoScaleR sobre el uso de las funciones de RevoScaleR con SQL Server.
En el tutorial anterior, ha usado las funciones RevoScaleR para inspeccionar los objetos de datos. En este tutorial se presenta la función RxInSqlServer, que permite definir un contexto de cálculo para un servidor SQL Server remoto. Con un contexto de cálculo remoto, puede desplazar la ejecución de R de una sesión local a una sesión remota en el servidor.
- Obtener información sobre los elementos de un contexto de cálculo de SQL Server remoto.
- Habilitar el seguimiento en un objeto de contexto de cálculo.
RevoScaleR admite varios contextos de cálculo: Hadoop, Spark en HDFS y SQL Server en la base de datos. Para SQL Server, la función RxInSqlServer se utiliza para las conexiones del servidor y para pasar objetos entre el equipo local y el contexto de ejecución remoto.
Creación y establecimiento de un contexto de cálculo
La función RxInSqlServer que crea el contexto de cálculo SQL Server usa la siguiente información:
- La cadena de conexión para la instancia SQL Server
- Especificación de cómo se deben controlar los resultados
- Especificación opcional de un directorio de datos compartido
- Argumentos opcionales que habilitan el seguimiento o especifican el nivel de seguimiento
Esta sección le guía a través de cada una de las partes.
Especifique la cadena de conexión para la instancia en la que se realizan los cálculos. Puede volver a usar la cadena de conexión que creó anteriormente.
Con un inicio de sesión de SQL
sqlConnString <- "Driver=SQL Server;Server=<SQL Server instance name>; Database=<database name>;Uid=<SQL user nme>;Pwd=<password>"
Con la autenticación de Windows
sqlConnString <- "Driver=SQL Server;Server=instance_name;Database=RevoDeepDive;Trusted_Connection=True"
Especifique cómo quiere que se controlen los resultados. El siguiente script dirige la sesión local de R para esperar los resultados del trabajo de R en el servidor antes de procesar la siguiente operación. También suprime el resultado de los cálculos remotos para que no aparezcan en la sesión local.
sqlWait <- TRUE sqlConsoleOutput <- FALSE
El argumento wait para RxInSqlServer es compatible con estas opciones:
TRUE. El trabajo está configurado como bloqueado y no vuelve hasta que se haya completado o haya dado error.
FALSE. Los trabajos no se configuran como bloqueados y vuelven de forma inmediata, lo que le permite continuar la ejecución de otro código de R. En cambio, incluso en modo de no bloqueo, la conexión de cliente con SQL Server debe mantenerse mientras se ejecuta el trabajo.
De manera opcional, especifique la ubicación de un directorio local para el uso compartido mediante la sesión de R local y mediante el equipo remoto de SQL Server y sus cuentas.
sqlShareDir <- paste("c:\\AllShare\\", Sys.getenv("USERNAME"), sep="")
Si quiere crear de manera manual un directorio específico para compartir, puede agregar una línea como la siguiente:
dir.create(sqlShareDir, recursive = TRUE)
Pase argumentos al constructor RxInSqlServer para crear el objeto de contexto de cálculo.
sqlCompute <- RxInSqlServer( connectionString = sqlConnString, wait = sqlWait, consoleOutput = sqlConsoleOutput)
La sintaxis de RxInSqlServer es casi idéntica a la de la función RxSqlServerData que usó anteriormente para definir el origen de datos. En cambio, hay algunas diferencias importantes.
El objeto del origen de datos, definido mediante la función RxSqlServerData, especifica dónde se almacenan los datos.
En cambio, el contexto de cálculo, definido mediante la función RxInSqlServer, indica dónde se realizarán las agregaciones y otros cálculos.
Definir un contexto de cálculo no afecta a los demás cálculos genéricos de R que puede realizar en la estación de trabajo, y no cambia el origen de los datos. Por ejemplo, puede definir un archivo de texto local como el origen de datos pero cambiar el contexto de cálculo a SQL Server y realizar toda la lectura y los resúmenes en los datos del equipo de SQL Server.
Active el contexto de cálculo remoto.
rxSetComputeContext(sqlCompute)
Devuelva información sobre el contexto de cálculo, incluidas sus propiedades.
rxGetComputeContext()
Vuelva a restablecer el contexto de cálculo en el equipo local especificando la palabra clave "local" (en el siguiente tutorial se muestra cómo usar el contexto de cálculo remoto).
rxSetComputeContext("local")
Sugerencia
Para obtener una lista de otras palabras clave admitidas por esta función, escriba help("rxSetComputeContext")
desde una línea de comandos de R.
Habilitación del seguimiento
A veces, las operaciones funcionan en su contexto local pero experimentan problemas al ejecutarse en un contexto de cálculo remoto. Si quiere analizar los problemas o supervisar el rendimiento, puede habilitar el seguimiento en el contexto de cálculo para admitir la solución de problemas en tiempo de ejecución.
Cree un nuevo contexto de cálculo que use la misma cadena de conexión, pero agregue los argumentos traceEnabled y traceLevel en el constructor RxInSqlServer.
sqlComputeTrace <- RxInSqlServer( connectionString = sqlConnString, #shareDir = sqlShareDir, wait = sqlWait, consoleOutput = sqlConsoleOutput, traceEnabled = TRUE, traceLevel = 7)
En este ejemplo, la propiedad traceLevel se establece en 7, que significa "mostrar toda la información de seguimiento".
Use la función rxSetComputeContext para especificar el contexto de cálculo habilitado para el seguimiento por nombre.
rxSetComputeContext(sqlComputeTrace)
Pasos siguientes
Obtenga información sobre cómo activar contextos de cálculo para ejecutar el código de R en el servidor o de forma local.