Il progetto Bigmemory

Elaborazione scalabile dei dati in R

Michael Kane

Assistant Professor, Yale University

bigmemory

bigmemory serve per archiviare, manipolare e processare grandi matrici, anche più grandi della RAM del computer

Elaborazione scalabile dei dati in R

big.matrix

  • Crea
  • Recupera
  • Sottoinsiemi
  • Riassumi
Elaborazione scalabile dei dati in R

Cosa significa "out-of-core"?

  • Gli oggetti R stanno in RAM

  • Quando la RAM finisce

    • I dati vengono spostati su disco
    • I programmi continuano (lenti) o vanno in crash

Meglio caricare in RAM solo i dati necessari al momento dell'elaborazione.

Elaborazione scalabile dei dati in R

Quando usare una big.matrix?

  • 20% della RAM
  • Matrici dense
Elaborazione scalabile dei dati in R

Panoramica di bigmemory

  • bigmemory implementa il tipo big.matrix, usato per creare, archiviare, accedere e manipolare matrici salvate su disco

  • I dati restano su disco e vengono spostati in RAM in modo implicito

Elaborazione scalabile dei dati in R

Panoramica di bigmemory

Un oggetto big.matrix:

  • Si importa una sola volta
  • File di "backing"
  • File di "descriptor"
Elaborazione scalabile dei dati in R

Esempio con bigmemory

library(bigmemory)

# Crea un nuovo oggetto big.matrix x <- big.matrix(nrow = 1, ncol = 3, type = "double", init = 0, backingfile = "hello_big_matrix.bin", descriptorfile = "hello_big_matrix.desc")
Elaborazione scalabile dei dati in R

File backing e descriptor

  • backing file: rappresentazione binaria della matrice su disco
  • descriptor file: contiene metadati, come numero di righe, colonne, nomi, ecc.
Elaborazione scalabile dei dati in R

Esempio con bigmemory

# Guarda cosa contiene
 x[,]
  0    0    0
x
Oggetto di classe "big.matrix"
Slot "address":
<pointer: 0x108e2a9a0>
Elaborazione scalabile dei dati in R

Somiglianze con le matrici

# Cambia il valore nella prima riga e colonna
x[1, 1] <- 3
# Verifica che la modifica sia avvenuta
x[,]
   3    0    0
Elaborazione scalabile dei dati in R

Esercitiamoci!

Elaborazione scalabile dei dati in R

Preparing Video For Download...