Re: [R-br] [R_STAT] [Dúvida] Carregar dados sem ser na memória RAM

O pacote SOAR pode resolver. De uma olhada no manual e na vignette em http://cran-r.c3sl.ufpr.br/web/packages/SOAR/index.html []s, --- Fernando Mayer URL: http://sites.google.com/site/fernandomayer e-mail: fernandomayer [@] gmail.com 2011/3/20 pedrorafaelmarinho <pedrorafaelmarinho@yahoo.com.br>:
Pessoal estou com um problema ou talvez seja do R. Tenho que ler uma base de dados de 600 mb em formato DBF (DBase). O R pelo que ando lendo ele ler a base de dados e joga na memória RAM. Toda vez que carrego essa base de dados o pc trava a ponto de o mouse não funcionar. Existe alguma forma de fazer com que o R não carregue toda a base de dados diretamente na memória? Por exemplo a base de dados ficar no HD e somente carregar algumas variáveis a medida que vou precisando? Softwares simples como o Tabwin eu consigo acessar a base de dados e o pc não trava...O que está acontecendo? O comando que usei para carregar a base foi read.dbf() usando o pacote foreign.
------------------------------------
Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/R_STAT/
<*> Para sair deste grupo, envie um e-mail para: R_STAT-unsubscribe@yahoogrupos.com.br
<*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html

*Fernando, na realiade o SOAR pode até ajudar, mas nas realidade ele é um mecanismo de fazer I/O, mas quando se está utilizando o conjunto de dados ele o carrega para memória RAM. Utilizo sempre o SOAR visto que tem um poder de compactação incrível de dados no HD. Arquivos de 100mb apos lidos com o pacote, ficam apenas com 10mb de espaço ocupado em HD. Ele também é ótimo para se trabalhar com uma grande quantidade de conjuntos intermediários ao mesmo tempo. Mas eventualemente é necessário salvá-los no HD e limpar a memória com gc(). Neste caso específico, se o banco de dados for de apenas números inteiros, tais quais as bases de dados do IBGE, recomendo a utilização do BigMemory. elo que sei, ele não trabalha de forma eficiente com variáveis do tipo fator ou caracter. De qualquer forma, para a importação, recomendo fortemente a exportação desta base de dados em formato texto, fica muito mais fácil para se trabalhar. Além de existir, opções bem eficientes para a leitura dos dados, como a função read.lines (ótima para conjunto de dados grandes). *Atenciosamente, Leandro Marino http://www.leandromarino.com.br (Fotógrafo) http://est.leandromarino.com.br/Blog (Estatístico) Cel.: + 55 21 9845-7707 Cel.: + 55 21 8777-7907 Em 20 de março de 2011 11:24, Fernando Mayer <fernandomayer@gmail.com>escreveu:
O pacote SOAR pode resolver. De uma olhada no manual e na vignette em
http://cran-r.c3sl.ufpr.br/web/packages/SOAR/index.html
[]s,
--- Fernando Mayer URL: http://sites.google.com/site/fernandomayer e-mail: fernandomayer [@] gmail.com
2011/3/20 pedrorafaelmarinho <pedrorafaelmarinho@yahoo.com.br>:
Pessoal estou com um problema ou talvez seja do R. Tenho que ler uma base de dados de 600 mb em formato DBF (DBase). O R pelo que ando lendo ele ler a base de dados e joga na memória RAM. Toda vez que carrego essa base de dados o pc trava a ponto de o mouse não funcionar. Existe alguma forma de fazer com que o R não carregue toda a base de dados diretamente na memória? Por exemplo a base de dados ficar no HD e somente carregar algumas variáveis a medida que vou precisando? Softwares simples como o Tabwin eu consigo acessar a base de dados e o pc não trava...O que está acontecendo? O comando que usei para carregar a base foi read.dbf() usando o pacote foreign.
------------------------------------
Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/R_STAT/
<*> Para sair deste grupo, envie um e-mail para: R_STAT-unsubscribe@yahoogrupos.com.br
<*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Visto que um fator (no R) nao e' nada mais que um vetor de inteiros, entao nao vejo pq o bigmemory seria sub-otimo nesse caso... a menos que o numero de niveis do fator seja muito grande (no limite isso seria um vetor de caracteres... e esses sao armazenados em RAM). Outra alternativa, igualmente limitada no aspecto de caracteres, e' o pacote 'ff'. E a terceira e' usar um banco de dados de verdade.... SQLite, SQL, etc... e fazer um fetch apenas da porcao relevante para o passo em questao.. b 2011/3/20 Leandro Marino <leandromarino@leandromarino.com.br>:
Fernando,
na realiade o SOAR pode até ajudar, mas nas realidade ele é um mecanismo de fazer I/O, mas quando se está utilizando o conjunto de dados ele o carrega para memória RAM.
Utilizo sempre o SOAR visto que tem um poder de compactação incrível de dados no HD. Arquivos de 100mb apos lidos com o pacote, ficam apenas com 10mb de espaço ocupado em HD. Ele também é ótimo para se trabalhar com uma grande quantidade de conjuntos intermediários ao mesmo tempo. Mas eventualemente é necessário salvá-los no HD e limpar a memória com gc().
Neste caso específico, se o banco de dados for de apenas números inteiros, tais quais as bases de dados do IBGE, recomendo a utilização do BigMemory. elo que sei, ele não trabalha de forma eficiente com variáveis do tipo fator ou caracter.
De qualquer forma, para a importação, recomendo fortemente a exportação desta base de dados em formato texto, fica muito mais fácil para se trabalhar. Além de existir, opções bem eficientes para a leitura dos dados, como a função read.lines (ótima para conjunto de dados grandes).
Atenciosamente, Leandro Marino http://www.leandromarino.com.br (Fotógrafo) http://est.leandromarino.com.br/Blog (Estatístico) Cel.: + 55 21 9845-7707 Cel.: + 55 21 8777-7907
Em 20 de março de 2011 11:24, Fernando Mayer <fernandomayer@gmail.com> escreveu:
O pacote SOAR pode resolver. De uma olhada no manual e na vignette em
http://cran-r.c3sl.ufpr.br/web/packages/SOAR/index.html
[]s,
--- Fernando Mayer URL: http://sites.google.com/site/fernandomayer e-mail: fernandomayer [@] gmail.com
2011/3/20 pedrorafaelmarinho <pedrorafaelmarinho@yahoo.com.br>:
Pessoal estou com um problema ou talvez seja do R. Tenho que ler uma base de dados de 600 mb em formato DBF (DBase). O R pelo que ando lendo ele ler a base de dados e joga na memória RAM. Toda vez que carrego essa base de dados o pc trava a ponto de o mouse não funcionar. Existe alguma forma de fazer com que o R não carregue toda a base de dados diretamente na memória? Por exemplo a base de dados ficar no HD e somente carregar algumas variáveis a medida que vou precisando? Softwares simples como o Tabwin eu consigo acessar a base de dados e o pc não trava...O que está acontecendo? O comando que usei para carregar a base foi read.dbf() usando o pacote foreign.
------------------------------------
Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/R_STAT/
<*> Para sair deste grupo, envie um e-mail para: R_STAT-unsubscribe@yahoogrupos.com.br
<*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

*É verdade Benilton. Posso ter entendido errado, mas certa vez assisti uma palestra do Jay Emmerson e ele informava que a melhor forma para trabalho no bigmemory era através de inteiros. Acredito que por não trabalhar com data.frame's e sim matrizes. Salvo engano, não há a possibilidade no R de armazenar fatores em matrizes, pelo que me lembro (posso estar muito enganado) ele automaticamente converte para character. Um pequeno exemplo: str( matrix(factor(1:4,labels=paste('teste',1:4)),ncol=2)) chr [1:2, 1:2] "teste 1" "teste 2" "teste 3" "teste 4" Como tenho o hábito de trabalhar com data.frames não sei muito bem como é trabalhado no R estes outros formatos. Tendo feito a leitura com o bigmemory existem uma série de outros pacotes relacionados que devem ser utlizados. bigalgebra, bigtabulate ... A terceiro opção do Benilton, para mim, é muito boa. Agora tudo depende do uso que terá que se fazer dos dados. Eventualmente, algumas soluções podem exigir mais trabalhos que outras... Um abraço, Leandro *Atenciosamente, Leandro Marino http://www.leandromarino.com.br (Fotógrafo) http://est.leandromarino.com.br/Blog (Estatístico) Cel.: + 55 21 9845-7707 Cel.: + 55 21 8777-7907 Em 20 de março de 2011 16:56, Benilton Carvalho <beniltoncarvalho@gmail.com>escreveu:
Visto que um fator (no R) nao e' nada mais que um vetor de inteiros, entao nao vejo pq o bigmemory seria sub-otimo nesse caso... a menos que o numero de niveis do fator seja muito grande (no limite isso seria um vetor de caracteres... e esses sao armazenados em RAM).
Outra alternativa, igualmente limitada no aspecto de caracteres, e' o pacote 'ff'.
E a terceira e' usar um banco de dados de verdade.... SQLite, SQL, etc... e fazer um fetch apenas da porcao relevante para o passo em questao..
b
2011/3/20 Leandro Marino <leandromarino@leandromarino.com.br>:
Fernando,
na realiade o SOAR pode até ajudar, mas nas realidade ele é um mecanismo de fazer I/O, mas quando se está utilizando o conjunto de dados ele o carrega para memória RAM.
Utilizo sempre o SOAR visto que tem um poder de compactação incrível de dados no HD. Arquivos de 100mb apos lidos com o pacote, ficam apenas com 10mb de espaço ocupado em HD. Ele também é ótimo para se trabalhar com uma grande quantidade de conjuntos intermediários ao mesmo tempo. Mas eventualemente é necessário salvá-los no HD e limpar a memória com gc().
Neste caso específico, se o banco de dados for de apenas números inteiros, tais quais as bases de dados do IBGE, recomendo a utilização do BigMemory. elo que sei, ele não trabalha de forma eficiente com variáveis do tipo fator ou caracter.
De qualquer forma, para a importação, recomendo fortemente a exportação desta base de dados em formato texto, fica muito mais fácil para se trabalhar. Além de existir, opções bem eficientes para a leitura dos dados, como a função read.lines (ótima para conjunto de dados grandes).
Atenciosamente, Leandro Marino http://www.leandromarino.com.br (Fotógrafo) http://est.leandromarino.com.br/Blog (Estatístico) Cel.: + 55 21 9845-7707 Cel.: + 55 21 8777-7907
Em 20 de março de 2011 11:24, Fernando Mayer <fernandomayer@gmail.com> escreveu:
O pacote SOAR pode resolver. De uma olhada no manual e na vignette em
http://cran-r.c3sl.ufpr.br/web/packages/SOAR/index.html
[]s,
--- Fernando Mayer URL: http://sites.google.com/site/fernandomayer e-mail: fernandomayer [@] gmail.com
2011/3/20 pedrorafaelmarinho <pedrorafaelmarinho@yahoo.com.br>:
Pessoal estou com um problema ou talvez seja do R. Tenho que ler uma base de dados de 600 mb em formato DBF (DBase). O R pelo que ando
lendo ele
ler a base de dados e joga na memória RAM. Toda vez que carrego essa base de dados o pc trava a ponto de o mouse não funcionar. Existe alguma forma de fazer com que o R não carregue toda a base de dados diretamente na memória? Por exemplo a base de dados ficar no HD e somente carregar algumas variáveis a medida que vou precisando? Softwares simples como o Tabwin eu consigo acessar a base de dados e o pc não trava...O que está acontecendo? O comando que usei para carregar a base foi read.dbf() usando o pacote foreign.
------------------------------------
Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/R_STAT/
<*> Para sair deste grupo, envie um e-mail para: R_STAT-unsubscribe@yahoogrupos.com.br
<*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br

Eu tenho usado o bigmemory desde antes da versao publica e devo dizer que a implementacao atual e' deveras superior q a de 2009, mas a manipulacao de caracteres (e, consequentemente, niveis de fatores) nao e' algo trivial em solucoes como bigmemory. O lance a respeito de inteiros e' o fato de ser um objeto naturalmente menor e isso acelera qualquer calculo executado. set.seed(1) x = sample(1:10L, 5e6, rep=T) y = as.numeric(x) all.equal(mean(x), mean(y)) f = function() system.time(mean(x)) g = function() system.time(mean(y)) rowMeans(replicate(100, f())) rowMeans(replicate(100, g())) Mas, em suma, o que eu falei nao foi muito claro... A essencia e' que, sabendo que o fator e' nada mais que inteiros, entao a gente pode (manualmente) fazer o que quer que seja que fariamos com os fatores, mas usando uma representacao inteira. :) abs 2011/3/20 Leandro Marino <leandromarino@leandromarino.com.br>:
É verdade Benilton.
Posso ter entendido errado, mas certa vez assisti uma palestra do Jay Emmerson e ele informava que a melhor forma para trabalho no bigmemory era através de inteiros. Acredito que por não trabalhar com data.frame's e sim matrizes. Salvo engano, não há a possibilidade no R de armazenar fatores em matrizes, pelo que me lembro (posso estar muito enganado) ele automaticamente converte para character.
Um pequeno exemplo: str( matrix(factor(1:4,labels=paste('teste',1:4)),ncol=2)) chr [1:2, 1:2] "teste 1" "teste 2" "teste 3" "teste 4"
Como tenho o hábito de trabalhar com data.frames não sei muito bem como é trabalhado no R estes outros formatos.
Tendo feito a leitura com o bigmemory existem uma série de outros pacotes relacionados que devem ser utlizados. bigalgebra, bigtabulate ...
A terceiro opção do Benilton, para mim, é muito boa. Agora tudo depende do uso que terá que se fazer dos dados. Eventualmente, algumas soluções podem exigir mais trabalhos que outras...
Um abraço, Leandro
Atenciosamente, Leandro Marino http://www.leandromarino.com.br (Fotógrafo) http://est.leandromarino.com.br/Blog (Estatístico) Cel.: + 55 21 9845-7707 Cel.: + 55 21 8777-7907
Em 20 de março de 2011 16:56, Benilton Carvalho <beniltoncarvalho@gmail.com> escreveu:
Visto que um fator (no R) nao e' nada mais que um vetor de inteiros, entao nao vejo pq o bigmemory seria sub-otimo nesse caso... a menos que o numero de niveis do fator seja muito grande (no limite isso seria um vetor de caracteres... e esses sao armazenados em RAM).
Outra alternativa, igualmente limitada no aspecto de caracteres, e' o pacote 'ff'.
E a terceira e' usar um banco de dados de verdade.... SQLite, SQL, etc... e fazer um fetch apenas da porcao relevante para o passo em questao..
b
2011/3/20 Leandro Marino <leandromarino@leandromarino.com.br>:
Fernando,
na realiade o SOAR pode até ajudar, mas nas realidade ele é um mecanismo de fazer I/O, mas quando se está utilizando o conjunto de dados ele o carrega para memória RAM.
Utilizo sempre o SOAR visto que tem um poder de compactação incrível de dados no HD. Arquivos de 100mb apos lidos com o pacote, ficam apenas com 10mb de espaço ocupado em HD. Ele também é ótimo para se trabalhar com uma grande quantidade de conjuntos intermediários ao mesmo tempo. Mas eventualemente é necessário salvá-los no HD e limpar a memória com gc().
Neste caso específico, se o banco de dados for de apenas números inteiros, tais quais as bases de dados do IBGE, recomendo a utilização do BigMemory. elo que sei, ele não trabalha de forma eficiente com variáveis do tipo fator ou caracter.
De qualquer forma, para a importação, recomendo fortemente a exportação desta base de dados em formato texto, fica muito mais fácil para se trabalhar. Além de existir, opções bem eficientes para a leitura dos dados, como a função read.lines (ótima para conjunto de dados grandes).
Atenciosamente, Leandro Marino http://www.leandromarino.com.br (Fotógrafo) http://est.leandromarino.com.br/Blog (Estatístico) Cel.: + 55 21 9845-7707 Cel.: + 55 21 8777-7907
Em 20 de março de 2011 11:24, Fernando Mayer <fernandomayer@gmail.com> escreveu:
O pacote SOAR pode resolver. De uma olhada no manual e na vignette em
http://cran-r.c3sl.ufpr.br/web/packages/SOAR/index.html
[]s,
--- Fernando Mayer URL: http://sites.google.com/site/fernandomayer e-mail: fernandomayer [@] gmail.com
2011/3/20 pedrorafaelmarinho <pedrorafaelmarinho@yahoo.com.br>:
Pessoal estou com um problema ou talvez seja do R. Tenho que ler uma base de dados de 600 mb em formato DBF (DBase). O R pelo que ando lendo ele ler a base de dados e joga na memória RAM. Toda vez que carrego essa base de dados o pc trava a ponto de o mouse não funcionar. Existe alguma forma de fazer com que o R não carregue toda a base de dados diretamente na memória? Por exemplo a base de dados ficar no HD e somente carregar algumas variáveis a medida que vou precisando? Softwares simples como o Tabwin eu consigo acessar a base de dados e o pc não trava...O que está acontecendo? O comando que usei para carregar a base foi read.dbf() usando o pacote foreign.
------------------------------------
Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/R_STAT/
<*> Para sair deste grupo, envie um e-mail para: R_STAT-unsubscribe@yahoogrupos.com.br
<*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
participantes (3)
-
Benilton Carvalho
-
Fernando Mayer
-
Leandro Marino