Erro de memória importando objeto pequeno de SQL

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/walkthroug... 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

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

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

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

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

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

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@gmail.com <mailto:emmanuel.brasil@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@gmail.com <mailto:cesar.rabak@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@gmail.com <mailto:emmanuel.brasil@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@gmail.com <mailto: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 <mailto: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: https://docs.microsoft.com/pt-br/sql/advanced-analytics/tutorials/walkthroug... <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),@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 <mailto:R-br@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@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.

RSQLServer não é boa alternativa, não sofre manutenção a tempos e depende de Java na máquina. Sugiro o pacote odbc. SQL Server é mestre em dar problema no R comigo, mas o problema é na autenticação. Em 1 de ago de 2017 9:14 AM, "Zhu Sha Zang via R-br" < r-br@listas.c3sl.ufpr.br> escreveu:
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@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@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@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@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: 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),@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.
_______________________________________________ R-br mailing listR-br@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@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.

Ei pessoal, Obrigado pelas sugestões de todos. Não sei de onde veio essa informação de que RODBC estaria "deprecated" olhei no r-forge e parece estar ativo. A ultima atualização é do primeiro semestre de 2016. A saida do meu problema foi usando Rclient. Um R disponibilizado no sítio da microsoft, que já vem instalados com uma série de pacotes proprietários da Microsoft para integração com o SQL server 2016/2017. O nome do pacote é RevoScaleR. Ao invés de fazer ...
p <- "SELECT model FROM [tempo_permanencia_models] WHERE id_model = 1022" mod.teste.peq <- sqlQuery(conn, p) # que retorna o erro de memória!
Eu fiz ... mod.teste.peq <- RxOdbcData(sqlQuery = "SELECT model FROM tempo_permanencia_models WHERE id_model=1018" ,connectionString = dbconn) mod.teste.peq <- rxReadObject(mod.teste.peq , decompress = "none") Agora dá pra fazer as previsões novamente... Abraço forte a todos, Pedro Brasil Em 2 de agosto de 2017 15:20, Leonard Assis via R-br < r-br@listas.c3sl.ufpr.br> escreveu:
RSQLServer não é boa alternativa, não sofre manutenção a tempos e depende de Java na máquina. Sugiro o pacote odbc.
SQL Server é mestre em dar problema no R comigo, mas o problema é na autenticação.
Em 1 de ago de 2017 9:14 AM, "Zhu Sha Zang via R-br" < r-br@listas.c3sl.ufpr.br> escreveu:
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@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@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@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@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: > 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),@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. >
_______________________________________________ R-br mailing listR-br@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@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 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.

O RODBC está sendo substituído pelo pacote odbc On sex, 25 de ago de 2017 10:34 Pedro Emmanuel Alvarenga Americano do Brasil <emmanuel.brasil@gmail.com> wrote:
Ei pessoal,
Obrigado pelas sugestões de todos. Não sei de onde veio essa informação de que RODBC estaria "deprecated" olhei no r-forge e parece estar ativo. A ultima atualização é do primeiro semestre de 2016.
A saida do meu problema foi usando Rclient. Um R disponibilizado no sítio da microsoft, que já vem instalados com uma série de pacotes proprietários da Microsoft para integração com o SQL server 2016/2017. O nome do pacote é RevoScaleR.
Ao invés de fazer ...
p <- "SELECT model FROM [tempo_permanencia_models] WHERE id_model = 1022" mod.teste.peq <- sqlQuery(conn, p) # que retorna o erro de memória!
Eu fiz ...
mod.teste.peq <- RxOdbcData(sqlQuery = "SELECT model FROM tempo_permanencia_models WHERE id_model=1018" ,connectionString = dbconn) mod.teste.peq <- rxReadObject(mod.teste.peq , decompress = "none")
Agora dá pra fazer as previsões novamente...
Abraço forte a todos,
Pedro Brasil
Em 2 de agosto de 2017 15:20, Leonard Assis via R-br < r-br@listas.c3sl.ufpr.br> escreveu:
RSQLServer não é boa alternativa, não sofre manutenção a tempos e depende de Java na máquina. Sugiro o pacote odbc.
SQL Server é mestre em dar problema no R comigo, mas o problema é na autenticação.
Em 1 de ago de 2017 9:14 AM, "Zhu Sha Zang via R-br" < r-br@listas.c3sl.ufpr.br> escreveu:
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@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@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@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@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: >> >> https://docs.microsoft.com/pt-br/sql/advanced-analytics/tutorials/walkthroug... >> >> 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. >> > >
_______________________________________________ R-br mailing listR-br@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@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 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.

https://github.com/rstats-db/odbc Em 25 de ago de 2017 10:38 AM, "Leonard Assis" <assis.leonard@gmail.com> escreveu:
O RODBC está sendo substituído pelo pacote odbc
On sex, 25 de ago de 2017 10:34 Pedro Emmanuel Alvarenga Americano do Brasil <emmanuel.brasil@gmail.com> wrote:
Ei pessoal,
Obrigado pelas sugestões de todos. Não sei de onde veio essa informação de que RODBC estaria "deprecated" olhei no r-forge e parece estar ativo. A ultima atualização é do primeiro semestre de 2016.
A saida do meu problema foi usando Rclient. Um R disponibilizado no sítio da microsoft, que já vem instalados com uma série de pacotes proprietários da Microsoft para integração com o SQL server 2016/2017. O nome do pacote é RevoScaleR.
Ao invés de fazer ...
p <- "SELECT model FROM [tempo_permanencia_models] WHERE id_model = 1022" mod.teste.peq <- sqlQuery(conn, p) # que retorna o erro de memória!
Eu fiz ...
mod.teste.peq <- RxOdbcData(sqlQuery = "SELECT model FROM tempo_permanencia_models WHERE id_model=1018" ,connectionString = dbconn) mod.teste.peq <- rxReadObject(mod.teste.peq , decompress = "none")
Agora dá pra fazer as previsões novamente...
Abraço forte a todos,
Pedro Brasil
Em 2 de agosto de 2017 15:20, Leonard Assis via R-br < r-br@listas.c3sl.ufpr.br> escreveu:
RSQLServer não é boa alternativa, não sofre manutenção a tempos e depende de Java na máquina. Sugiro o pacote odbc.
SQL Server é mestre em dar problema no R comigo, mas o problema é na autenticação.
Em 1 de ago de 2017 9:14 AM, "Zhu Sha Zang via R-br" < r-br@listas.c3sl.ufpr.br> escreveu:
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@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@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@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@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: >>> 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),@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. >>> >> >> >
_______________________________________________ R-br mailing listR-br@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@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 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.

On 25/08/2017 10:38, Leonard Assis via R-br wrote:
O RODBC está sendo substituído pelo pacote odbc
Pelo que vi, o autor do ODBC (que está bem ativo no link que o Leonardo enviou no outro email) descontinuou o RODBC em 2002 e o Brian Ripley adotou-o desde então. Interessante saber que há várias outras opções: http://www.burns-stat.com/r-database-interfaces/ Elias

On 25/08/2017 10:33, Pedro Emmanuel Alvarenga Americano do Brasil via R-br wrote:
A ultima atualização é do primeiro semestre de 2016. Parece estar ativo e teve mudanças este ano: https://cran.r-project.org/web/packages/RODBC/ChangeLog Elias

Ah. . . a ditadura dos SW proprietários... Pelo menos resolveu seu problema e pode seguir com a parte que interessa que são as análises! Sucesso. 2017-08-25 10:33 GMT-03:00 Pedro Emmanuel Alvarenga Americano do Brasil via R-br <r-br@listas.c3sl.ufpr.br>:
Ei pessoal,
Obrigado pelas sugestões de todos. Não sei de onde veio essa informação de que RODBC estaria "deprecated" olhei no r-forge e parece estar ativo. A ultima atualização é do primeiro semestre de 2016.
A saida do meu problema foi usando Rclient. Um R disponibilizado no sítio da microsoft, que já vem instalados com uma série de pacotes proprietários da Microsoft para integração com o SQL server 2016/2017. O nome do pacote é RevoScaleR.
Ao invés de fazer ...
p <- "SELECT model FROM [tempo_permanencia_models] WHERE id_model = 1022" mod.teste.peq <- sqlQuery(conn, p) # que retorna o erro de memória!
Eu fiz ...
mod.teste.peq <- RxOdbcData(sqlQuery = "SELECT model FROM tempo_permanencia_models WHERE id_model=1018" ,connectionString = dbconn) mod.teste.peq <- rxReadObject(mod.teste.peq , decompress = "none")
Agora dá pra fazer as previsões novamente...
Abraço forte a todos,
Pedro Brasil
Em 2 de agosto de 2017 15:20, Leonard Assis via R-br < r-br@listas.c3sl.ufpr.br> escreveu:
RSQLServer não é boa alternativa, não sofre manutenção a tempos e depende de Java na máquina. Sugiro o pacote odbc.
SQL Server é mestre em dar problema no R comigo, mas o problema é na autenticação.
Em 1 de ago de 2017 9:14 AM, "Zhu Sha Zang via R-br" < r-br@listas.c3sl.ufpr.br> escreveu:
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@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@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@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@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: >> 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),@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. >> > >
_______________________________________________ R-br mailing listR-br@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@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 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.
_______________________________________________ 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.

O grupo rstats-db hoje desenvolve o DBI, responsável pelas ligações de SGBD com o R. Recomendo uso deste pacote quando for lidar com conexão odbc. On sex, 25 de ago de 2017 11:55 Cesar Rabak <cesar.rabak@gmail.com> wrote:
Ah. . . a ditadura dos SW proprietários...
Pelo menos resolveu seu problema e pode seguir com a parte que interessa que são as análises!
Sucesso.
2017-08-25 10:33 GMT-03:00 Pedro Emmanuel Alvarenga Americano do Brasil via R-br <r-br@listas.c3sl.ufpr.br>:
Ei pessoal,
Obrigado pelas sugestões de todos. Não sei de onde veio essa informação de que RODBC estaria "deprecated" olhei no r-forge e parece estar ativo. A ultima atualização é do primeiro semestre de 2016.
A saida do meu problema foi usando Rclient. Um R disponibilizado no sítio da microsoft, que já vem instalados com uma série de pacotes proprietários da Microsoft para integração com o SQL server 2016/2017. O nome do pacote é RevoScaleR.
Ao invés de fazer ...
p <- "SELECT model FROM [tempo_permanencia_models] WHERE id_model = 1022" mod.teste.peq <- sqlQuery(conn, p) # que retorna o erro de memória!
Eu fiz ...
mod.teste.peq <- RxOdbcData(sqlQuery = "SELECT model FROM tempo_permanencia_models WHERE id_model=1018" ,connectionString = dbconn) mod.teste.peq <- rxReadObject(mod.teste.peq , decompress = "none")
Agora dá pra fazer as previsões novamente...
Abraço forte a todos,
Pedro Brasil
Em 2 de agosto de 2017 15:20, Leonard Assis via R-br < r-br@listas.c3sl.ufpr.br> escreveu:
RSQLServer não é boa alternativa, não sofre manutenção a tempos e depende de Java na máquina. Sugiro o pacote odbc.
SQL Server é mestre em dar problema no R comigo, mas o problema é na autenticação.
Em 1 de ago de 2017 9:14 AM, "Zhu Sha Zang via R-br" < r-br@listas.c3sl.ufpr.br> escreveu:
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@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@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@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@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: >>> >>> https://docs.microsoft.com/pt-br/sql/advanced-analytics/tutorials/walkthroug... >>> >>> 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. >>> >> >> >
_______________________________________________ R-br mailing listR-br@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@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 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.
_______________________________________________ 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.
participantes (5)
-
Cesar Rabak
-
Elias T. Krainski
-
Leonard Assis
-
Pedro Emmanuel Alvarenga Americano do Brasil
-
Zhu Sha Zang