Introdução

Processamento de Dados em Escala no R

Simon Urbanek

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

bigmemory

  • Todos os dados devem estar em um único disco
  • Dados devem ser representados como uma matriz
Processamento de Dados em Escala no R

iotools

  • Dados podem ter vários tipos — ex.: data frames
  • Armazenado em várias máquinas
  • Processa dados em "pedaços"
Processamento de Dados em Escala no R

Processar um chunk por vez, sequencialmente

  • Limita o uso de recursos controlando o tamanho do chunk
  • Permite carregar resultados adiante
Processamento de Dados em Escala no R

Processar cada chunk de forma independente

  • Corresponde a dividir-computar-combinar
  • Nenhuma informação pode ser compartilhada entre chunks
  • Permite processamento paralelo e distribuído
Processamento de Dados em Escala no R

Map e Reduce para operações mais complexas

# 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
Processamento de Dados em Escala no R

Nem tudo cabe em Split-Apply-Combine

Operações que exigem todos os dados de uma vez não podem ser calculadas com a abordagem Split-Apply-Combine.

Exemplo: mediana

Processamento de Dados em Escala no R

Porém...

Muitas rotinas de regressão podem ser escritas em termos de split-apply-combine

Processamento de Dados em Escala no R

Vamos praticar!

Processamento de Dados em Escala no R

Preparing Video For Download...