はじめに

Rで学ぶスケーラブルなデータ処理

Simon Urbanek

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

bigmemory

  • 全データを単一ディスクに保存する必要がある
  • データは行列形式で表現する必要がある
Rで学ぶスケーラブルなデータ処理

iotools

  • 複数の型のデータに対応(例:データフレーム)
  • 複数のマシンに分散して保存
  • データを「チャンク」単位で処理
Rで学ぶスケーラブルなデータ処理

チャンクを逐次処理する

  • チャンクサイズを制御してリソース使用量を制限
  • 結果を次の処理に引き継ぐことが可能
Rで学ぶスケーラブルなデータ処理

各チャンクを独立して処理する

  • Split-Compute-Combineに対応
  • チャンク間で情報を共有できない
  • 並列・分散処理が可能
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で学ぶスケーラブルなデータ処理

Split-Apply-Combineに適さない処理

全データを一度に必要とする演算は、Split-Apply-Combineアプローチでは計算できません。

例:中央値

Rで学ぶスケーラブルなデータ処理

ただし ..

多くの回帰処理はSplit-Apply-Combineの形式で記述できます

Rで学ぶスケーラブルなデータ処理

練習しましょう!

Rで学ぶスケーラブルなデータ処理

Preparing Video For Download...