Ei Cesar,

Eu tenho pouco familiaridade com SQL, e o amigo da TI que tem e faz manutenção do servidor diz que o erro é na minha estação com R. Eu acho que não, mas não tenho certeza porque eu não sei ao certo o que quer dizer esse erro. O que seria essa "Calloc"? É uma coisa natural do R?

Abraço,

Pedro Brasil

Em 28 de julho de 2017 16:59, Cesar Rabak <cesar.rabak@gmail.com> escreveu:
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@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:

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),@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@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.