[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