Introduzione

Elaborazione scalabile dei dati in R

Simon Urbanek

Member of R-Core, Lead Inventive Scientist, AT&T Labs Research

bigmemory

  • Tutti i dati devono stare su un solo disco
  • I dati devono essere una matrice
Elaborazione scalabile dei dati in R

iotools

  • I dati possono avere più tipi, es. data frame
  • Archiviati su più macchine
  • Elabora i dati a «blocchi»
Elaborazione scalabile dei dati in R

Elabora un blocco alla volta in sequenza

  • Limita le risorse controllando la dimensione del blocco
  • Permette di portare avanti i risultati
Elaborazione scalabile dei dati in R

Elabora ogni blocco in modo indipendente

  • Corrisponde a split-compute-combine
  • Nessuna informazione può essere condivisa tra blocchi
  • Consente elaborazione parallela e distribuita
Elaborazione scalabile dei dati in R

Mapping e Reducing per operazioni più complesse

# Create a random vector
x <- rnorm(100)
# Find the mean
mean(x)
-0.01996644
# Take the sum of chunks of 
# the vector
sl <- Map(function(v) {
         c(sum(v), length(v))}, 
  list(x[1:25], x[26:100]))

# Add the sums and lengths
slr <- Reduce(`+`, sl)
# Find the mean
slr[1]/slr[2]
-0.01996644
Elaborazione scalabile dei dati in R

Non tutto rientra in Split-Apply-Combine

Le operazioni che richiedono tutti i dati insieme non si possono calcolare con l'approccio Split-Apply-Combine.

Esempio: Mediana

Elaborazione scalabile dei dati in R

Tuttavia…

Molte routine di regressione si possono scrivere in termini di split-apply-combine

Elaborazione scalabile dei dati in R

Esercitiamoci!

Elaborazione scalabile dei dati in R

Preparing Video For Download...