คำถามคู่สำหรับอุ่นเครื่อง
เมธอด dplyr ที่ใช้ในสองบทที่ผ่านมาทำงานผ่าน SQL interface ของ Spark กล่าวคือ โค้ด R จะถูกแปลงเป็น SQL ก่อนที่จะส่งให้ Spark ประมวลผล วิธีนี้เหมาะมากสำหรับการจัดการข้อมูลพื้นฐาน แต่จะมีข้อจำกัดเมื่อต้องการประมวลผลที่ซับซ้อนมากขึ้น ตัวอย่างเช่น สามารถคำนวณค่าเฉลี่ยของคอลัมน์ได้ แต่ไม่สามารถคำนวณค่ามัธยฐานได้ ดังตัวอย่างจากแบบฝึกหัด 'Summarizing columns' ในบทที่ 1
track_metadata_tbl %>%
summarize(mean_duration = mean(duration)) #OK
track_metadata_tbl %>%
summarize(median_duration = median(duration))
sparklyr ยังมีอินเทอร์เฟซแบบ "native" อีก 2 แบบ ซึ่งจะกล่าวถึงในสองบทถัดไป คำว่า native หมายความว่าอินเทอร์เฟซเหล่านี้เรียกใช้โค้ด Java หรือ Scala เพื่อเข้าถึงไลบรารีของ Spark โดยตรง โดยไม่ต้องแปลงเป็น SQL sparklyr รองรับ Spark DataFrame Application Programming Interface (API) ผ่านฟังก์ชันที่มี prefix ว่า sdf_ นอกจากนี้ยังรองรับการเข้าถึงไลบรารี machine learning ของ Spark ที่ชื่อ MLlib ผ่านฟังก์ชัน "feature transformation" ที่ขึ้นต้นด้วย ft_ และฟังก์ชัน "machine learning" ที่ขึ้นต้นด้วย ml_
ความแตกต่างสำคัญอีกประการระหว่างการทำงานกับ R และ Spark คือ Spark เข้มงวดกับประเภทของตัวแปรมากกว่า R มาก ฟังก์ชัน native ส่วนใหญ่ต้องการอินพุตที่เป็น DoubleType และคืนค่าผลลัพธ์เป็น DoubleType เช่นกัน DoubleType คือสิ่งที่ Spark ใช้แทน vector ประเภท numeric ใน R sparklyr จะจัดการแปลง numeric เป็น DoubleType ให้อัตโนมัติ แต่การแปลงข้อมูลประเภท logical หรือ integer เป็น numeric และแปลงกลับนั้นเป็นหน้าที่ของผู้ใช้ (นั่นก็คือคุณ!)
ข้อความใดต่อไปนี้ถูกต้อง?
- เมธอด
dplyrของsparklyrแปลงโค้ดเป็น Scala ก่อนรันบน Spark - การแปลงโค้ด R เป็น SQL ทำให้การคำนวณที่รองรับมีจำนวนจำกัด
- ฟังก์ชัน modeling ส่วนใหญ่ใน Spark MLlib ต้องการอินพุตเป็น
DoubleTypeและคืนค่าผลลัพธ์เป็นDoubleType - ฟังก์ชัน modeling ส่วนใหญ่ใน Spark MLlib ต้องการอินพุตเป็น
IntegerTypeและคืนค่าผลลัพธ์เป็นBooleanType
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
แนะนำ Spark ด้วย sparklyr ใน R
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำจริง
เปลี่ยนทฤษฎีให้เป็นการลงมือทำด้วยแบบฝึกหัดเชิงโต้ตอบหนึ่งในของเรา
เริ่มแบบฝึกหัด