導論

R 的可擴展資料處理

Simon Urbanek

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

bigmemory

  • 所有資料必須存在單一磁碟
  • 資料必須以矩陣表示
R 的可擴展資料處理

iotools

  • 資料可含多種型別,如 data frame
  • 可分散儲存於多台機器
  • 以「區塊」處理資料
R 的可擴展資料處理

逐一區塊依序處理

  • 透過控制區塊大小限制資源用量
  • 允許延續上一區塊的結果
R 的可擴展資料處理

各區塊獨立處理

  • 對應 split-compute-combine
  • 區塊之間不可共享資訊
  • 可進行平行與分散式處理
R 的可擴展資料處理

以 Mapping 與 Reducing 進行較複雜運算

# 建立隨機向量
x <- rnorm(100)
# 求平均數
mean(x)
-0.01996644
# 對向量的區塊求和
sl <- Map(function(v) {
         c(sum(v), length(v))}, 
  list(x[1:25], x[26:100]))

# 加總各區塊的總和與長度
slr <- Reduce(`+`, sl)
# 求平均數
slr[1]/slr[2]

-0.01996644
R 的可擴展資料處理

並非所有情境都適用 Split-Apply-Combine

需要一次讀入全部資料的運算,無法用 Split-Apply-Combine 計算。

例:中位數

R 的可擴展資料處理

然而……

許多迴歸流程可用 split-apply-combine 表示

R 的可擴展資料處理

一起來練習吧!

R 的可擴展資料處理

Preparing Video For Download...