[R-br] Digest R-br, volume 80, assunto 1

Juan C. R. Soto Sotelo sotojcr em gmail.com
Terça Agosto 1 12:56:38 -03 2017


Concordo que a chamada da query é muito grande,
você viu como ficaram os campos na tabela tempo_permanencia_models depois
do insert : tipo e tamanho?


Juan

Error in odbcQuery(channel, query, rows_at_time) :
  'Calloc' could not allocate memory (214748364800 of 1 bytes)



<https://mailtrack.io/> Enviado com Mailtrack
<https://mailtrack.io/install?source=signature&lang=pt&referral=sotojcr@gmail.com&idSignature=24>

Em 1 de agosto de 2017 12:00, <r-br-request em listas.c3sl.ufpr.br> escreveu:

> Enviar submissões para a lista de discussão R-br para
>         r-br em listas.c3sl.ufpr.br
>
> Para se cadastrar ou descadastrar via WWW, visite o endereço
>         https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> ou, via email, envie uma mensagem com a palavra 'help' no assunto ou
> corpo da mensagem para
>         r-br-request em listas.c3sl.ufpr.br
>
> Você poderá entrar em contato com a pessoa que gerencia a lista pelo
> endereço
>         r-br-owner em listas.c3sl.ufpr.br
>
> Quando responder, por favor edite sua linha Assunto assim ela será
> mais específica que "Re: Contents of R-br digest..."
>
> Tópicos de Hoje:
>
>    1. Re: Erro de memória importando objeto pequeno de SQL
>       (Cesar Rabak)
>    2. Re: Erro de memória importando objeto pequeno de SQL
>       (Zhu Sha Zang)
>
>
> ---------- Mensagem encaminhada ----------
> From: Cesar Rabak <cesar.rabak em gmail.com>
> To: Pedro Emmanuel Alvarenga Americano do Brasil <
> emmanuel.brasil em gmail.com>
> Cc: "a lista Brasileira oficial de discussão do programa R." <
> r-br em listas.c3sl.ufpr.br>
> Bcc:
> Date: Mon, 31 Jul 2017 14:53:52 -0300
> Subject: Re: [R-br] Erro de memória importando objeto pequeno de SQL
> 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>:
>
>> 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>
>> 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>:
>>>
>>>> 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>
>>>> 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>:
>>>>>
>>>>>> 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/tuto
>>>>>> rials/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;Datab
>>>>>> ase=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.
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>
>
> ---------- Mensagem encaminhada ----------
> From: Zhu Sha Zang <zhushazang em gmail.com>
> To: r-br em listas.c3sl.ufpr.br
> Cc:
> Bcc:
> Date: Mon, 31 Jul 2017 18:52:05 -0400
> Subject: Re: [R-br] Erro de memória importando objeto pequeno de SQL
>
> 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>:
>
>> 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>
>> 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>:
>>>
>>>> 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>
>>>> 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>:
>>>>>
>>>>>> 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/tuto
>>>>>> rials/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;Datab
>>>>>> ase=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.
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>
>
> _______________________________________________
> R-br mailing listR-br em listas.c3sl.ufpr.brhttps://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.
>
>
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20170801/f72dd70c/attachment.html>


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