[R-br] Erro de memória importando objeto pequeno de SQL

Cesar Rabak cesar.rabak em gmail.com
Sexta Julho 28 16:59:39 -03 2017


Pedro,

Mesmo sem poder fazer uma tentativa, me parece que o erro é estranho demais
para não ser notado: a chamada à primitiva da ling. C "calloc" está pedindo
200 Gbytes, que falha e me parece algo grande demais para um "default" da
chamada a sqlQuery().

HTH


2017-07-28 9:42 GMT-03:00 Pedro Emmanuel Alvarenga Americano do Brasil via
R-br <r-br em listas.c3sl.ufpr.br>:

> 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
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20170728/c0d0a25e/attachment.html>


Mais detalhes sobre a lista de discussão R-br