[R-br] Erro de memória importando objeto pequeno de SQL
Pedro Emmanuel Alvarenga Americano do Brasil
emmanuel.brasil em gmail.com
Sexta Julho 28 09:42:01 -03 2017
Amigos de R,
Estou envolvido numa tarefa que importo um banco SQL de um servidor, faço
uma modelagem, salvo o modelo no SQL através de uma seriliazação, e depois
carrego esse modelo do SQL para fazer previsões em novos dados.
Estou seguindo um exemplo disponível nessa página:
https://docs.microsoft.com/pt-br/sql/advanced-analytics/tutorials/walkthrough-deploy-and-use-the-model
Sei que esse exemplo não é reproduzível porque depende da conexão com o
servidor e credenciais que não posso divulgar. Mas se alguem já passou por
esse problema poderia pelo menos indicar aonde está o problema que não
estou sabendo identificar? Acho que muito provavelmente seria uma
configuração do SQL no servidor...
library(RODBC)
# define database connection string
dbconn <- 'Driver={SQL
Server};Server=BLABLABLA;Database=BLABLABLA;Trusted_Connection=yes;'
# define a connection
conn <- odbcDriverConnect(connection = dbconn)
# Estou fazendo o exemplo com o objeto LETTERS só pra ter certeza que é um
objeto pequeno e que não deveria ser um problema de memória do R.
> LETTERS
[1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q"
"R" "S" "T" "U" "V" "W" "X"
[25] "Y" "Z"
> teste_pequeno <- serialize(LETTERS, connection = NULL)
> teste_pequeno <- paste(teste_pequeno, collapse = "")
# o EXEC PersistModel faz
# insert into [tempo_permanencia_models] (model, [description]) values
(convert(varbinary(max), em m,2), @description)
# insere o modelo e uma descricao
> p <- paste("EXEC PersistModel @m='", teste_pequeno,"', @description =
'Teste de serialização objeto pequeno'", sep = "")
> sqlQuery(conn, p)
character(0)
> rm(teste_pequeno)
> p <- "SELECT model FROM [tempo_permanencia_models] WHERE id_model = 1022"
> mod.teste.peq <- sqlQuery(conn, p)
Error in odbcQuery(channel, query, rows_at_time) :
'Calloc' could not allocate memory (214748364800 of 1 bytes)
> p <- paste0("SELECT id_model, description FROM [tempo_permanencia_models]
WHERE id_model = 1022")
> sqlQuery(conn, p) #
id_model description
1 1022 Teste de serialização objeto pequeno
Reparem que o objeto está salvo no servidor. Foi salvo a partir do R, mas
não retorna para o R por conta do erro de memoria. Eu não estou sabendo nem
por onde começar.
Que a força esteja sempre com vocês e abraço forte.
Pedro Brasil
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20170728/d0e5db01/attachment.html>
Mais detalhes sobre a lista de discussão R-br