สิ่งที่จะได้ เมื่อใช้ Apache Iceberg ทำ data lake

พอดีไปลองเล่น Apache Iceberg มา ว้าวมาก เพราะลดจุดที่จุกจิกกับการทำ data lake บน S3 / blob storage ไปได้เยอะมาก แถมไม่ต้องทำ stateful service ด้วย ทุกอย่างสามารถแช่อยู่ใน blob storage ได้เลย

จริงๆ stateful service ตัวเดียวที่เขาแนะนำให้ทำ คือ REST Catalog จะได้ลดการ query metadata files จาก blob storage ตรงๆ แต่ถ้าใช้เทสใน local ไม่ต้องทำตรงนี้ก็ได้

สรุปคร่าวๆ ว่า ถ้าใช้ spark เขียนลง data lake, สิ่งที่ Iceberg จะช่วยได้ คือ:

  1. ไม่ต้องมา optimize parquet file size เอง เพราะ Iceberg ช่วยกะขนาดให้ ว่า ขนาดไฟล์ที่เขียนลง lake ควรเป็นขนาดเท่าไหร่ เพราะสิ่งนี้มีผลกับ spark performance
  2. จะเพิ่ม / ลบ / แก้ชื่อ column ต่อไปนี้ก็ทำได้แล้ว โดยที่ไม่ต้องเขียนใหม่ทั้ง table
  3. table partition ก็แก้ได้ตลอดเช่นกัน ซึ่งจะต่างกับ tooling ส่วนใหญ่ ที่ partition เลือกแล้วเลือกเลย จะแก้คือต้องขึ้น table ใหม่
  4. ทุกครั้งที่มีการเขียนลง Iceberg, ไม่ว่าจะเป็นการ append, overwrite จะมีการเก็บข้อมูลเดิมไว้เสมอ ทำให้สามารถ time-travel กลับมาได้ทุกเมื่อ

ถ้าอยากอ่านเต็มๆ ตามไปได้ที่ Using Apache Iceberg to reduce data lake operations overhead | Karn Wong แต่เป็นภาษาอังกฤษนะ แฮ่ :sweat_smile:

edit: fix typo

3 Likes