บทนำ

การประมวลผลข้อมูลขนาดใหญ่ใน R

Simon Urbanek

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

bigmemory

  • ข้อมูลทั้งหมดต้องจัดเก็บบนดิสก์เดียว
  • ข้อมูลต้องอยู่ในรูปแบบเมทริกซ์
การประมวลผลข้อมูลขนาดใหญ่ใน R

iotools

  • รองรับข้อมูลได้หลายประเภท เช่น data frames
  • จัดเก็บข้อมูลบนหลายเครื่อง
  • ประมวลผลข้อมูลทีละ "chunk"
การประมวลผลข้อมูลขนาดใหญ่ใน R

ประมวลผลทีละ chunk ตามลำดับ

  • จำกัดการใช้ทรัพยากรด้วยการควบคุมขนาด chunk
  • นำผลลัพธ์ส่งต่อระหว่าง chunk ได้
การประมวลผลข้อมูลขนาดใหญ่ใน R

ประมวลผลแต่ละ chunk อย่างอิสระ

  • สอดคล้องกับแนวทาง split-compute-combine
  • chunk แต่ละส่วนไม่แชร์ข้อมูลกัน
  • รองรับการประมวลผลแบบขนานและแบบกระจาย
การประมวลผลข้อมูลขนาดใหญ่ใน 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 ได้

ตัวอย่าง: Median

การประมวลผลข้อมูลขนาดใหญ่ใน R

อย่างไรก็ตาม ..

รูทีน regression หลายแบบสามารถเขียนในรูปแบบ split-apply-combine ได้

การประมวลผลข้อมูลขนาดใหญ่ใน R

มาฝึกกันเถอะ!

การประมวลผลข้อมูลขนาดใหญ่ใน R

Preparing Video For Download...