Cache in Spark

เกร็ด Spark – เกร็ดเล็กๆที่เกี่ยวกับ Spark

เปิดปีใหม่ด้วย Spark

หลายคนอย่างที่รู้อยู่แล้วว่างาน Big Data ยังไงก็หนีไม่พ้น Spark อยู่แล้ว

จึงอยากแนะนำให้รู้จักกับ Cache หรือ .cache() เป็นสิ่งที่ช่วยให้ประสิทธิภาพการทำงาน Spark ดีขึ้นได้ด้วย

แต่❗️❗️

แอดอยากให้เข้าใจการทำงานของ Spark แบบไวๆ ก็คือ Spark นั้นมีรูปแบบการทำงานที่เรียกว่า Lazy evaluation ก็คือ Spark จะไม่ทำงาน (execute) ทันทีที่เรากำหนดค่าไป

.

เช่น


อย่างที่เห็นว่าการทำงานของ Spark เป็นแบบไหนไปแล้ว ที่นี้มาเข้าเรื่อง Cache กันดีกว่า ไม่งั้นไม่ได้เข้าหัวข้อกันสักที ฮา

อย่างที่เห็นว่า Spark จะทำงานเมื่อเกิด action เท่านั้น ตรงนี้เองก็เป็นจุดที่ทำให้ประสิทธิภาพการทำงานได้ช้าเช่นกัน โดยเฉพาะถ้า Dataframe เราต้องมีการเรียกใช้ซ้ำๆ

non cache เช่น

จึงแนะนำว่าถ้าเกิดเราต้องการเรียกใช้ซ้ำนั้น แนะนำให้พ่วง .cache() ไปด้วย

cache เช่น

ข้อดีของการทำ cache

– ประสิทธิภาพที่เร็วขึ้นเมื่อมีการเรียกใช้ข้อมูลซ้ำ โดยเฉพาะครั้งที่สองเป็นต้นไป

ข้อระวังของการทำ cache

– อย่างที่รู้ว่า cache เก็บข้อมูลที่ memory ถ้าขนาด Dataframe เราใหญ่เกินไปอาจจะทำให้เกิดอาการ OOM (Out Of Memory)

ข้อแนะนำการใช้ cache

– เมื่อมีความต้องการเรียกใช้มากกว่าหนึ่งครั้ง

– ต้องระวังเรื่อง Dataframe ใหญ่เกินขนาด memory แนะนำว่าให้ใช้ .cache() หลัง filter() หรือหั่น Dataframe ให้เล็กลงสักนิด แล้วค่อยใช้ cache

– อย่าลืม❗️❗️ .unpersist() ทุกครั้งหลังจากใช้งาน cache เสร็จแล้วจะได้คืน memory กลับไปที่ cluster

มาถึงตรงนี้ก็น่าจะพออธิบายเกี่ยวกับ Spark .cache() ให้ทุกคนพอเข้าใจได้บ้างแล้ว ในรูปอาจจะเขียน click bait หน่อยๆแต่อยากให้ระวังและเลือกใช้ให้ถูกต้องด้วยนะครับ

พยายามอยากอธิบายให้กระชับ ทำให้แอดอาจจะข้ามบางอย่างและไปเอาเฉพาะที่สำคัญมาเขียน เพราะงั้นถ้าสงสัยหรือไม่เข้าใจ หรือบทความผิดยังไง แนะนำและพูดคุยกันมาได้นะครับ

เอาไว้มาต่อกับ เกร็ด Spark กันใหม่ครับ

Please subscribe!

Tags:

Leave a comment