The Bigmemory Project

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

Michael Kane

Assistant Professor, Yale University

bigmemory

bigmemory ใช้จัดเก็บ จัดการ และประมวลผลเมทริกซ์ขนาดใหญ่ที่อาจมีขนาดเกิน RAM ของเครื่อง

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

big.matrix

  • สร้าง
  • เรียกข้อมูล
  • แบ่งส่วน
  • สรุปผล
การประมวลผลข้อมูลขนาดใหญ่ใน R

"Out-of-core" คืออะไร?

  • ออบเจกต์ใน R จะถูกเก็บไว้ใน RAM

  • เมื่อ RAM เต็ม

    • ข้อมูลจะถูกย้ายไปยังดิสก์
    • โปรแกรมทำงานต่อได้ (แต่ช้าลง) หรืออาจหยุดทำงาน

ควรโหลดข้อมูลเข้า RAM เฉพาะเมื่อจำเป็นต้องประมวลผลเท่านั้น

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

ควรใช้ big.matrix เมื่อใด?

  • ขนาดไม่เกิน 20% ของ RAM
  • เมทริกซ์แบบ dense
การประมวลผลข้อมูลขนาดใหญ่ใน R

ภาพรวมของ bigmemory

  • bigmemory นำเสนอประเภทข้อมูล big.matrix สำหรับสร้าง จัดเก็บ เข้าถึง และจัดการเมทริกซ์บนดิสก์

  • ข้อมูลจะอยู่บนดิสก์และถูกโหลดเข้า RAM โดยอัตโนมัติเมื่อจำเป็น

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

ภาพรวมของ bigmemory

ออบเจกต์ big.matrix:

  • นำเข้าข้อมูลเพียงครั้งเดียว
  • ไฟล์ "backing"
  • ไฟล์ "descriptor"
การประมวลผลข้อมูลขนาดใหญ่ใน R

ตัวอย่างการใช้ bigmemory

library(bigmemory)

# Create a new big.matrix object x <- big.matrix(nrow = 1, ncol = 3, type = "double", init = 0, backingfile = "hello_big_matrix.bin", descriptorfile = "hello_big_matrix.desc")
การประมวลผลข้อมูลขนาดใหญ่ใน R

ไฟล์ backing และ descriptor

  • backing file: ข้อมูลเมทริกซ์ในรูปแบบไบนารีบนดิสก์
  • descriptor file: เก็บ metadata เช่น จำนวนแถว คอลัมน์ ชื่อ ฯลฯ
การประมวลผลข้อมูลขนาดใหญ่ใน R

ตัวอย่างการใช้ bigmemory

# See what's in it
 x[,]
  0    0    0
x
An object of class "big.matrix"
Slot "address":
<pointer: 0x108e2a9a0>
การประมวลผลข้อมูลขนาดใหญ่ใน R

ความคล้ายคลึงกับเมทริกซ์ทั่วไป

# Change the value in the first row and column
x[1, 1] <- 3
# Verify the change has been made
x[,]
   3    0    0
การประมวลผลข้อมูลขนาดใหญ่ใน R

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

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

Preparing Video For Download...