Introducere

Procesarea scalabilă a datelor în R

Simon Urbanek

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

bigmemory

  • Toate datele trebuie stocate pe un singur disc
  • Datele trebuie reprezentate ca matrice
Procesarea scalabilă a datelor în R

iotools

  • Datele pot avea mai multe tipuri - ex.: cadre de date
  • Stocate pe mai multe mașini
  • Procesează datele în „blocuri"
Procesarea scalabilă a datelor în R

Procesare secvențială a câte unui bloc

  • Limitează utilizarea resurselor prin controlul dimensiunii blocului
  • Permite transferul rezultatelor între blocuri
Procesarea scalabilă a datelor în R

Procesare independentă a fiecărui bloc

  • Corespunde abordării împarte-calculează-combină
  • Nu se poate partaja informații între blocuri
  • Permite procesare paralelă și distribuită
Procesarea scalabilă a datelor în R

Mapare și Reducere pentru Operații mai Complexe

# 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
Procesarea scalabilă a datelor în R

Nu toate operațiile se potrivesc cu Împarte-Aplică-Combină

Operațiile care necesită toate datele simultan nu pot fi realizate prin abordarea Împarte-Aplică-Combină.

Exemplu: Mediana

Procesarea scalabilă a datelor în R

Totuși ..

Multe rutine de regresie pot fi exprimate în termeni de împarte-aplică-combină

Procesarea scalabilă a datelor în R

Să exersăm!

Procesarea scalabilă a datelor în R

Preparing Video For Download...