ลดขนาดข้อมูลด้วยการสุ่มตัวอย่าง
เมื่อต้องทำงานกับชุดข้อมูลขนาดใหญ่ ไม่จำเป็นต้องใช้ข้อมูลทั้งหมดในทุกครั้ง โดยเฉพาะในช่วงเริ่มต้นของโปรเจกต์ที่ยังอยู่ระหว่างการทดลองแนวทางต่าง ๆ การทำงานกับชุดข้อมูลขนาดเล็กกว่าจะช่วยให้วนซ้ำได้เร็วขึ้น sdf_sample() เป็นฟังก์ชันที่ช่วยให้ทำสิ่งนี้ได้อย่างสะดวก โดยรับ tibble และสัดส่วนของแถวที่ต้องการดึงมา ในกรณีนี้จะสุ่มตัวอย่างแบบไม่ใส่คืน หากต้องการสุ่มตัวอย่างหนึ่งในสิบของชุดข้อมูล ให้ใช้โค้ดดังนี้
a_tibble %>%
sdf_sample(fraction = 0.1, replacement = FALSE)
เนื่องจากผลลัพธ์ของการสุ่มเป็นแบบสุ่ม และมักต้องการนำชุดข้อมูลที่ย่อแล้วกลับมาใช้ซ้ำ จึงนิยมใช้ compute() เพื่อบันทึกผลลัพธ์เป็น Spark data frame อีกตัวหนึ่ง
a_tibble %>%
sdf_sample(<some args>) %>%
compute("sample_dataset")
หากต้องการให้ผลลัพธ์สามารถทำซ้ำได้ สามารถกำหนด seed ของตัวเลขสุ่มผ่านอาร์กิวเมนต์ seed ได้ ซึ่งจะทำให้ได้ชุดข้อมูลสุ่มชุดเดิมทุกครั้งที่รันโค้ด สามารถใช้ตัวเลขใดก็ได้เป็น seed เพียงเลือกจำนวนเต็มบวกที่ต้องการ
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
แนะนำ Spark ด้วย sparklyr ใน R
คำแนะนำการฝึกหัด
มีการสร้าง Spark connection ไว้ให้แล้วในชื่อ spark_conn และมีการกำหนด tibble ที่เชื่อมต่อกับ track metadata ที่เก็บอยู่ใน Spark ไว้ล่วงหน้าในชื่อ track_metadata_tbl
- ใช้
sdf_sample()เพื่อสุ่มตัวอย่าง track metadata 1% แบบไม่ใส่คืน- ส่งค่า
20000229ให้กับอาร์กิวเมนต์seedเพื่อกำหนด random seed
- ส่งค่า
- คำนวณผลลัพธ์และบันทึกไว้ในตารางชื่อ
"sample_track_metadata"
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# track_metadata_tbl has been pre-defined
track_metadata_tbl
track_metadata_tbl %>%
# Sample the data without replacement
___ %>%
# Compute the result
___