Atualmente, estou usando SQL Server 2016 SP
a edição padrão e quero instalar os serviços R. Na documentação é dito que uma instalação autônoma é permitida apenas no Enterprise ( Machine Learning Server (Standalone)
).
Além disso, encontrei um post, onde o cara está falando que no padrão não consigo usar operações paralelas e há limitações de memória:
Alguém poderia dizer quais são as limitações exatas de memória/processadores?
Preciso de detalhes como usar cálculos pesados de R e os testes por enquanto mostram que a implementação na edição padrão não está funcionando como eu esperava.
Confira a página "Disponibilidade de recursos nas edições do SQL Server Machine Learning Services" dos Manuais Online:
Books Online entra em mais detalhes nessa página sobre as restrições de implantação, bem como:
Como Brent citou lá, uma das principais diferenças é a escala.
Se o seu cálculo for embaraçosamente paralelo, ou seja, cada linha pode ser calculada independentemente uma da outra, então usar
sp_execute_external_script
with@parallel = 1
permitirá que você execute seus cálculos R em paralelo facilmente. Observe que ainda é possível morder mais do que você pode mastigar e ficar sem memória; nesse caso, você pode adicionar@params = N'@r_rowsPerRead INT', @r_rowsPerRead = N
onde N é a quantidade máxima de linhas que você gostaria de ler de uma só vez.Usando o acima, consegui executar um cálculo R contra 2 bilhões de linhas de dados em menos de 10 minutos (obviamente, sua milhagem pode variar).
Se você precisar de mais controle do lote, como garantir que as linhas apropriadas sejam agrupadas, acho que você pode conseguir isso chamando as funções RevoScaleR diretamente de seu script R, mas não brinquei com isso.
Se você absolutamente precisar usar a Standard Edition, poderá ser criativo ao agrupar os dados em lote, mas quando tentei isso, descobri que o código ficaria bastante complexo e também não era tão rápido quanto aproveitar o streaming da Enterprise Edition.
Mais informações aqui: https://learn.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql?view=sql-server-2017
Observação O SSDT não oferece suporte
GRANT EXECUTE ANY EXTERNAL SCRIPT
, portanto, se você estiver usando isso para implantações, as coisas se tornarão dolorosas. Eu levantei isso como um problema na voz do usuário https://feedback.azure.com/forums/908035-sql-server/suggestions/32896864-grant-execute-any-external-script-not-recognised-b .