Definir e usar contextos de computação (tutorial do SQL Server e do RevoScaleR)
Aplica-se a: SQL Server 2016 (13.x) e versões posteriores
Este é o tutorial 4 da série de tutoriais do RevoScaleR sobre como usar as funções do RevoScaleR com o SQL Server.
No tutorial anterior, você usou as funções do RevoScaleR para inspecionar objetos de dados. Este tutorial apresenta a função RxInSqlServer, que permite definir um contexto de computação para um SQL Server remoto. Com um contexto de computação remota, você pode alternar a execução de R de uma sessão local para uma sessão remota no servidor.
- Conhecer os elementos de um contexto de computação do SQL Server remoto
- Habilitar o rastreamento em um objeto de contexto de computação
O RevoScaleR dá suporte a vários contextos de computação: Hadoop, Spark no HDFS e SQL Server no banco de dados. Para o SQL Server, a função RxInSqlServer é usada para conexões de servidor e passar objetos entre o computador local e o contexto de execução remota.
Criar e definir um contexto de computação
A função RxInSqlServer que cria o contexto de computação do SQL Server usa as seguintes informações:
- Cadeia de conexão da instância SQL Server
- Especificação de como a saída deve ser tratada
- Especificação opcional de um diretório de dados compartilhados
- Argumentos opcionais que habilitam o rastreamento ou especificam o nível de rastreamento
Esta seção orienta você em cada parte.
Especifique a cadeia de conexão da instância em que os cálculos serão realizados. Você pode usar novamente a cadeia de conexão que criou anteriormente.
Usando um logon do SQL
sqlConnString <- "Driver=SQL Server;Server=<SQL Server instance name>; Database=<database name>;Uid=<SQL user nme>;Pwd=<password>"
Usando a autenticação do Windows
sqlConnString <- "Driver=SQL Server;Server=instance_name;Database=RevoDeepDive;Trusted_Connection=True"
Especifique como deseja que a saída seja tratada. O script a seguir direciona a sessão local do R para aguardar os resultados do trabalho do R no servidor antes de processar a próxima operação. Ele também impede que a saída de cálculos remotos apareça na sessão local.
sqlWait <- TRUE sqlConsoleOutput <- FALSE
O argumento wait para RxInSqlServer dá suporte a estas opções:
TRUE. O trabalho é configurado como bloqueio e não é retornado até que tenha sido concluído ou ocorra uma falha.
FALSE. Os trabalhos são configurados como sem bloqueio e são retornados imediatamente, permitindo que você continue a execução de outro código do R. No entanto, mesmo no modo desbloqueado, a conexão do cliente com o SQL Server deve ser mantida durante a execução do trabalho.
Ou especifique a localização de um diretório local para uso compartilhado pela sessão do R local e pelo computador do SQL Server remoto e suas contas.
sqlShareDir <- paste("c:\\AllShare\\", Sys.getenv("USERNAME"), sep="")
Se desejar criar manualmente um diretório específico para compartilhamento, você poderá adicionar uma linha como a seguinte:
dir.create(sqlShareDir, recursive = TRUE)
Passe argumentos para o construtor RxInSqlServer para definir o objeto do contexto de computação.
sqlCompute <- RxInSqlServer( connectionString = sqlConnString, wait = sqlWait, consoleOutput = sqlConsoleOutput)
A sintaxe para RxInSqlServer é quase idêntica à da função RxSqlServerData usada anteriormente para definir a fonte de dados. No entanto, há algumas diferenças importantes.
O objeto da fonte de dados, definido usando a função RxSqlServerData, especifica o local em que os dados são armazenados.
Por outro lado, o contexto de computação, definido com a função RxInSqlServer, indica o local em que as agregações e outros cálculos deverão ocorrer.
A definição de um contexto de computação não afeta nenhuma outra computação R que você pode fazer na estação de trabalho e não altera a fonte dos dados. Por exemplo, você poderia definir um arquivo de texto local como a fonte de dados, mas alterar o contexto de computação para o SQL Server e executar todas as leituras e resumos nos dados no computador do SQL Server.
Ative o contexto de computação remota.
rxSetComputeContext(sqlCompute)
Retorne informações sobre o contexto de computação, incluindo suas propriedades.
rxGetComputeContext()
Redefina o contexto de computação como o computador local especificando a palavra-chave "local" (o próximo tutorial demonstra o uso do contexto de computação remota).
rxSetComputeContext("local")
Dica
Para obter uma lista de outras palavras-chave com suporte nesta função, digite help("rxSetComputeContext")
em uma linha de comando do R.
Habilitar o rastreamento
Às vezes, as operações funcionam em seu contexto local mas enfrentam problemas quando estão em execução em um contexto de computação remota. Se você desejar analisar problemas ou monitorar o desempenho, poderá habilitar o rastreamento no contexto de computação para dar suporte à solução de problemas de tempo de execução.
Crie um contexto de computação que use a mesma cadeia de conexão, mas adicione os argumentos traceEnabled e traceLevel ao construtor RxInSqlServer.
sqlComputeTrace <- RxInSqlServer( connectionString = sqlConnString, #shareDir = sqlShareDir, wait = sqlWait, consoleOutput = sqlConsoleOutput, traceEnabled = TRUE, traceLevel = 7)
Nesse exemplo, a propriedade traceLevel foi definida como 7, o que significa "mostrar todas as informações de rastreamento".
Use a função rxSetComputeContext para especificar o contexto de computação habilitado para rastreamento por nome.
rxSetComputeContext(sqlComputeTrace)
Próximas etapas
Saiba como alternar contextos de computação para executar o código R no servidor ou localmente.