Wprowadzenie

Skalowalne przetwarzanie danych w R

Simon Urbanek

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

bigmemory

  • Wszystkie dane muszą być przechowywane na jednym dysku
  • Dane muszą być reprezentowane jako macierz
Skalowalne przetwarzanie danych w R

iotools

  • Dane mogą mieć wiele typów – np. ramki danych
  • Przechowywane na wielu maszynach
  • Przetwarza dane w „fragmentach"
Skalowalne przetwarzanie danych w R

Przetwarzanie fragmentów sekwencyjnie

  • Ogranicza zużycie zasobów poprzez kontrolę rozmiaru fragmentu
  • Umożliwia przenoszenie wyników
Skalowalne przetwarzanie danych w R

Przetwarzanie każdego fragmentu niezależnie

  • Odpowiada podejściu split-compute-combine
  • Fragmenty nie współdzielą informacji
  • Umożliwia przetwarzanie równoległe i rozproszone
Skalowalne przetwarzanie danych w R

Mapowanie i redukcja dla bardziej złożonych operacji

# 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
Skalowalne przetwarzanie danych w R

Nie wszystko pasuje do Split-Apply-Combine

Operacje wymagające dostępu do wszystkich danych jednocześnie nie mogą być wykonane metodą Split-Apply-Combine.

Przykład: Mediana

Skalowalne przetwarzanie danych w R

Jednak ..

Wiele procedur regresji można zapisać w postaci split-apply-combine

Skalowalne przetwarzanie danych w R

Czas na ćwiczenia!

Skalowalne przetwarzanie danych w R

Preparing Video For Download...