Projekt Bigmemory

Skalowalne przetwarzanie danych w R

Michael Kane

Assistant Professor, Yale University

bigmemory

bigmemory służy do przechowywania, manipulowania i przetwarzania dużych macierzy, które mogą przekraczać dostępną pamięć RAM

Skalowalne przetwarzanie danych w R

big.matrix

  • Tworzenie
  • Pobieranie
  • Podzbiory
  • Podsumowywanie
Skalowalne przetwarzanie danych w R

Co oznacza „out-of-core"?

  • Obiekty R są przechowywane w pamięci RAM

  • Gdy zabraknie pamięci RAM

    • Dane są przenoszone na dysk
    • Programy działają wolniej lub ulegają awarii

Lepiej przenosić dane do pamięci RAM tylko wtedy, gdy są potrzebne do przetwarzania.

Skalowalne przetwarzanie danych w R

Kiedy używać big.matrix?

  • 20% rozmiaru pamięci RAM
  • Gęste macierze
Skalowalne przetwarzanie danych w R

Przegląd bigmemory

  • bigmemory implementuje typ danych big.matrix, służący do tworzenia, przechowywania, dostępu i manipulowania macierzami na dysku

  • Dane są przechowywane na dysku i przenoszone do pamięci RAM w sposób niejawny

Skalowalne przetwarzanie danych w R

Przegląd bigmemory

Obiekt big.matrix:

  • Wystarczy zaimportować raz
  • Plik „backing"
  • Plik „descriptor"
Skalowalne przetwarzanie danych w R

Przykład użycia bigmemory

library(bigmemory)

# Create a new big.matrix object x <- big.matrix(nrow = 1, ncol = 3, type = "double", init = 0, backingfile = "hello_big_matrix.bin", descriptorfile = "hello_big_matrix.desc")
Skalowalne przetwarzanie danych w R

Pliki backing i descriptor

  • plik backing: binarna reprezentacja macierzy na dysku
  • plik descriptor: przechowuje metadane, m.in. liczbę wierszy, kolumn, nazwy itp.
Skalowalne przetwarzanie danych w R

Przykład użycia bigmemory

# See what's in it
 x[,]
  0    0    0
x
An object of class "big.matrix"
Slot "address":
<pointer: 0x108e2a9a0>
Skalowalne przetwarzanie danych w R

Podobieństwa z macierzami

# Change the value in the first row and column
x[1, 1] <- 3
# Verify the change has been made
x[,]
   3    0    0
Skalowalne przetwarzanie danych w R

Czas na ćwiczenia!

Skalowalne przetwarzanie danych w R

Preparing Video For Download...