Введение

Масштабируемая обработка данных в R

Simon Urbanek

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

bigmemory

  • Все данные должны храниться на одном диске
  • Данные должны быть представлены в виде матрицы
Масштабируемая обработка данных в R

iotools

  • Данные могут иметь несколько типов — например, фреймы данных
  • Хранятся на нескольких машинах
  • Обрабатывает данные «чанками»
Масштабируемая обработка данных в R

Последовательная обработка чанков

  • Ограничивает потребление ресурсов, управляя размером чанка
  • Позволяет переносить результаты между итерациями
Масштабируемая обработка данных в R

Независимая обработка каждого чанка

  • Соответствует подходу «разделить — вычислить — объединить»
  • Чанки не обмениваются данными между собой
  • Допускает параллельную и распределённую обработку
Масштабируемая обработка данных в R

Map и Reduce для сложных операций

# 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
Масштабируемая обработка данных в R

Не всё подходит для «разделить — применить — объединить»

Операции, требующие всех данных сразу, нельзя выполнить с помощью подхода «разделить — применить — объединить».

Пример: медиана

Масштабируемая обработка данных в R

Тем не менее…

Многие процедуры регрессии можно записать в терминах «разделить — применить — объединить»

Масштабируемая обработка данных в R

Давайте потренируемся!

Масштабируемая обработка данных в R

Preparing Video For Download...