[R-br] Erro de memória importando objeto pequeno de SQL
Zhu Sha Zang
zhushazang em gmail.com
Segunda Julho 31 19:52:05 -03 2017
Parece que RODBC está "deprecated", tente usar o pacote RSQLServer.
Atenciosamente
On 07/31/2017 01:53 PM, Cesar Rabak via R-br wrote:
> Correto Pedro!
>
> Contudo, não entendo porque. . .
>
> Minha forma de atacar esse problema seria mandar os dados para o BD
> por outra maneira (que ñ via R) e tentar conectar apenas para puxar os
> dados: aí a gente vê se é na criação do BD via R que ele deixa em
> aberto um tamanho default muito grande ou se é a chamada que por
> alguma coincidência cria um default exigindo tanta memória (embora nos
> OSs modernos isso não deveria gerar problema porque existem os
> gerenciadores de memória virtual).
>
> HTH
> --
> Cesar Rabak
>
>
> 2017-07-31 10:32 GMT-03:00 Pedro Emmanuel Alvarenga Americano do
> Brasil <emmanuel.brasil em gmail.com <mailto:emmanuel.brasil em gmail.com>>:
>
> Cesar,
>
> A função RODBC::sqlQuery não tem exemplo, mas já usei diversas
> vezes com outros scripts e funciona. Esse problema está
> acontecendo somente no exemplo dessa conexão em específico. Então
> estou entendendo a partir de agora que alguma configuração da
> conexão está pedindo pra reservar memória mais do que o a máquina
> possui.
>
> Pedro Brasil
>
> Em 29 de julho de 2017 20:45, Cesar Rabak <cesar.rabak em gmail.com
> <mailto:cesar.rabak em gmail.com>> escreveu:
>
> Pedro,
>
> Calloc é uma chamada "primitiva" para o R, uma função da
> biblioteca C e é uma função feita para "alocar" (reservar)
> memória e zerá-la.
>
> O estranho, para mim, é a tentativa do aplicativo de reservar
> *tanta* memória assim na chamada da função do R.
>
> Essa função sqlQuery() pode ser testada fazendo:
>
> > example(sqlQuery)
>
> ?
>
> Se o exemplo do próprio pacote funcionar, aí teremos que fazer
> uma busca para ver de onde vem esse comportamento.
>
> HTH
> --
> Cesar Rabak
>
>
>
>
> 2017-07-28 17:12 GMT-03:00 Pedro Emmanuel Alvarenga Americano
> do Brasil <emmanuel.brasil em gmail.com
> <mailto:emmanuel.brasil em gmail.com>>:
>
> 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 em gmail.com <mailto:cesar.rabak em 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 em listas.c3sl.ufpr.br
> <mailto: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
> <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
> <mailto:R-br em listas.c3sl.ufpr.br>
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-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
> <http://www.leg.ufpr.br/r-br-guia>) e forneça
> código mínimo reproduzível.
>
>
>
>
>
>
>
>
> _______________________________________________
> 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/20170731/677cb4bf/attachment.html>
Mais detalhes sobre a lista de discussão R-br