Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2016 (13.x) e versões posteriores
Este é o tutorial 4 da série de tutoriais RevoScaleR sobre como usar funções RevoScaleR com SQL Server.
No tutorial anterior, usaste 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, pode transferir a execução do R de uma sessão local para uma sessão remota no servidor.
- Aprenda os elementos de um contexto computacional remoto de SQL Server
- Ativar o rastreamento num objeto de contexto de computação
O RevoScaleR suporta múltiplos contextos de computação: Hadoop, Spark no HDFS e SQL Server na base de dados. Para o SQL Server, a função RxInSqlServer é usada para ligações ao servidor e para a passagem de 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 utiliza a seguinte informação:
- Cadeia de ligação para a instância do SQL Server
- Especificação de como a saída deve ser gerida
- Especificação opcional de um diretório de dados partilhado
- Argumentos opcionais que permitem o traçado ou especificam o nível do traço
Esta secção explica-te cada parte.
Especifique a cadeia de ligação para a instância onde os cálculos são realizados. Podes reutilizar a cadeia de ligação que criaste anteriormente.
Usando um login SQL
sqlConnString <- "Driver=SQL Server;Server=<SQL Server instance name>; Database=<database name>;Uid=<SQL user nme>;Pwd=<password>"Utilização da Windows authentication
sqlConnString <- "Driver=SQL Server;Server=instance_name;Database=RevoDeepDive;Trusted_Connection=True"Especifica como queres que a saída seja tratada. O script seguinte orienta a sessão R local a esperar pelos resultados do trabalho R no servidor antes de processar a próxima operação. Também impede que a saída das computações remotas seja apresentada na sessão local.
sqlWait <- TRUE sqlConsoleOutput <- FALSEO argumento de espera para RxInSqlServer suporta estas opções:
VERDADEIRO. A tarefa está configurada como bloqueante e só regressa quando está concluída ou falha.
FALSO. Os trabalhos são configurados como não bloqueantes e retornam imediatamente, permitindo-lhe continuar a executar outros códigos R. No entanto, mesmo em modo não bloqueante, a ligação ao cliente com o SQL Server deve ser mantida enquanto o trabalho está em execução.
Opcionalmente, especifique a localização de um diretório local para uso partilhado pela sessão local do R e pelo computador SQL Server remoto e pelas suas contas.
sqlShareDir <- paste("c:\\AllShare\\", Sys.getenv("USERNAME"), sep="")Se quiser criar manualmente um diretório específico para partilhar, pode adicionar uma linha como a seguinte:
dir.create(sqlShareDir, recursive = TRUE)Passe argumentos ao construtor RxInSqlServer para criar o objeto de contexto de computação.
sqlCompute <- RxInSqlServer( connectionString = sqlConnString, wait = sqlWait, consoleOutput = sqlConsoleOutput)A sintaxe do RxInSqlServer é quase idêntica à da função RxSqlServerData que usou anteriormente para definir a fonte de dados. No entanto, existem algumas diferenças importantes.
O objeto fonte de dados, definido usando a função RxSqlServerData, especifica onde os dados estão armazenados.
Em contraste, o contexto de computação, definido usando a função RxInSqlServer , indica onde devem ocorrer agregações e outros cálculos.
Definir um contexto de computação não afeta quaisquer outros cálculos genéricos de R que possas realizar na tua estação de trabalho, e não altera a origem dos dados. Por exemplo, podes definir um ficheiro de texto local como fonte de dados, mas mudar o contexto de computação para SQL Server e fazer toda a tua leitura e resumos nos dados no computador SQL Server.
Ative o contexto de computação remota.
rxSetComputeContext(sqlCompute)Devolve informação sobre o contexto de computação, incluindo as suas propriedades.
rxGetComputeContext()Reinicie o contexto de computação de volta para o computador local especificando a palavra-chave "local" (o próximo tutorial demonstra o uso do contexto de computação remota).
rxSetComputeContext("local")
Sugestão
Para uma lista de outras palavras-chave suportadas por esta função, escreva help("rxSetComputeContext") a partir de uma linha de comandos R.
Ativar rastreamento
Por vezes, as operações funcionam no seu contexto local, mas apresentam problemas quando são executadas num contexto de computação remota. Se quiser analisar questões ou monitorizar o desempenho, pode ativar o rastreamento no contexto de computação, para suportar a resolução de problemas em tempo de execução.
Crie um novo contexto de computação que use a mesma cadeia de ligaçã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)Neste exemplo, a propriedade traceLevel está definida como 7, significando "mostrar toda a informação de rastreamento."
Utilize a função rxSetComputeContext para especificar, pelo nome, o contexto de computação com rastreio ativado.
rxSetComputeContext(sqlComputeTrace)
Passo seguinte
Aprende a mudar de contexto de computação para executar código R no servidor ou localmente.