O projeto Bigmemory

Processamento de Dados em Escala no R

Michael Kane

Assistant Professor, Yale University

bigmemory

bigmemory é usado para armazenar, manipular e processar grandes matrizes, que podem ser maiores que a RAM do computador

Processamento de Dados em Escala no R

big.matrix

  • Criar
  • Recuperar
  • Subconjunto
  • Resumir
Processamento de Dados em Escala no R

O que significa "out-of-core"?

  • Objetos R ficam na RAM

  • Quando a RAM acaba

    • As coisas vão para o disco
    • Os programas continuam (lentos) ou travam

É melhor mover dados para a RAM só quando forem necessários para o processamento.

Processamento de Dados em Escala no R

Quando usar uma big.matrix?

  • 20% do tamanho da RAM
  • Matrizes densas
Processamento de Dados em Escala no R

Visão geral do bigmemory

  • bigmemory implementa o tipo big.matrix, usado para criar, armazenar, acessar e manipular matrizes no disco

  • Os dados ficam no disco e são movidos para a RAM de forma implícita

Processamento de Dados em Escala no R

Visão geral do bigmemory

Um objeto big.matrix:

  • Só precisa ser importado uma vez
  • Arquivo "backing"
  • Arquivo "descriptor"
Processamento de Dados em Escala no R

Um exemplo usando bigmemory

library(bigmemory)

# Criar um novo objeto big.matrix x <- big.matrix(nrow = 1, ncol = 3, type = "double", init = 0, backingfile = "hello_big_matrix.bin", descriptorfile = "hello_big_matrix.desc")
Processamento de Dados em Escala no R

Arquivos backing e descriptor

  • backing file: representação binária da matriz no disco
  • descriptor file: guarda metadados, como número de linhas, colunas, nomes, etc.
Processamento de Dados em Escala no R

Um exemplo usando bigmemory

# Ver o conteúdo
 x[,]
  0    0    0
x
Um objeto da classe "big.matrix"
Slot "address":
<pointer: 0x108e2a9a0>
Processamento de Dados em Escala no R

Semelhanças com matrizes

# Mudar o valor na primeira linha e coluna
x[1, 1] <- 3
# Verificar a alteração
x[,]
   3    0    0
Processamento de Dados em Escala no R

Vamos praticar!

Processamento de Dados em Escala no R

Preparing Video For Download...