บทนำ
ในโลกใบใหญ่ที่เปลี่ยนแปลงอย่างรวดเร็ว การประมวลผล และการวิเคราะห์ การจัดการศักยภาพของชุดข้อมูลที่กว้างขวางทำหน้าที่เป็นเสาหลักพื้นฐานสำหรับบริษัทต่างๆ ในการตัดสินใจอย่างมีข้อมูล ช่วยให้พวกเขาดึงข้อมูลเชิงลึกที่เป็นประโยชน์จากข้อมูลของพวกเขา ในช่วงไม่กี่ปีที่ผ่านมา มีโซลูชั่นที่หลากหลายเกิดขึ้น เช่น Databricks Delta Lake และ Apache Iceberg แพลตฟอร์มเหล่านี้ได้รับการพัฒนาสำหรับการจัดการ Data Lake และทั้งสองมีฟีเจอร์และฟังก์ชันการทำงานที่แข็งแกร่ง แต่สำหรับองค์กรต่างๆ จำเป็นต้องเข้าใจถึงความแตกต่างในแง่ของสถาปัตยกรรม เทคนิค และฟังก์ชันในการย้ายแพลตฟอร์มที่มีอยู่ บทความนี้จะสำรวจกระบวนการที่ซับซ้อนในการเปลี่ยนจาก Databricks Delta Lake ไปเป็น Apache Iceberg
วัตถุประสงค์การเรียนรู้
- ทำความเข้าใจคุณสมบัติของ Databricks และ Apache Iceberg
- เรียนรู้วิธีเปรียบเทียบองค์ประกอบทางสถาปัตยกรรมระหว่าง Databricks และ Apache Iceberg
- ทำความเข้าใจแนวทางปฏิบัติที่ดีที่สุดในการย้ายสถาปัตยกรรมทะเลสาบเดลต้าไปยังแพลตฟอร์มโอเพ่นซอร์ส เช่น ภูเขาน้ำแข็ง
- เพื่อใช้เครื่องมือของบุคคลที่สามอื่น ๆ เป็นทางเลือกแทนแพลตฟอร์มเดลต้าเลค
บทความนี้เผยแพร่โดยเป็นส่วนหนึ่งของไฟล์ Blogathon วิทยาศาสตร์ข้อมูล
สารบัญ
ทำความเข้าใจ Databricks Delta Lake
Databricks Delta Lake นั้นเป็นชั้นจัดเก็บข้อมูลที่ซับซ้อนซึ่งสร้างขึ้นที่ด้านบนของ Apache Spark กรอบ. มีฟังก์ชันข้อมูลสมัยใหม่ที่พัฒนาขึ้นเพื่อการจัดการข้อมูลที่ราบรื่น Delta Lake มีคุณสมบัติหลายประการที่เป็นแกนหลัก:
- ธุรกรรมกรด: Delta Lake รับประกันหลักการพื้นฐานของความเป็นปรมาณู ความสม่ำเสมอ การแยกตัว และความทนทานสำหรับการแก้ไขข้อมูลผู้ใช้ทั้งหมด จึงรับประกันการดำเนินงานข้อมูลที่แข็งแกร่งและถูกต้อง
- วิวัฒนาการสคีมา: ความยืดหยุ่นมาพร้อมกับส่วนใหญ่ ทะเลสาบเดลต้าเนื่องจากรองรับวิวัฒนาการสคีมาได้อย่างราบรื่น จึงช่วยให้อุตสาหกรรมดำเนินการเปลี่ยนแปลงสคีมาได้โดยไม่รบกวนไปป์ไลน์ข้อมูลที่มีอยู่ในการผลิต
- เวลาเดินทาง: เช่นเดียวกับการเดินทางข้ามเวลาในภาพยนตร์ไซไฟ ทะเลสาบเดลต้าให้ความสามารถในการสืบค้นภาพรวมข้อมูล ณ จุดใดจุดหนึ่งในช่วงเวลาหนึ่ง ดังนั้นจึงช่วยให้ผู้ใช้เจาะลึกในการวิเคราะห์ข้อมูลในอดีตอย่างครอบคลุมและความสามารถในการกำหนดเวอร์ชัน
- การจัดการไฟล์ที่ปรับให้เหมาะสม: Delta Lake รองรับเทคนิคที่มีประสิทธิภาพในการจัดระเบียบและจัดการไฟล์ข้อมูลและข้อมูลเมตา ส่งผลให้ประสิทธิภาพการสืบค้นได้รับการปรับปรุงและลดต้นทุนการจัดเก็บ
คุณสมบัติของภูเขาน้ำแข็งอาปาเช่
Apache Iceberg มอบทางเลือกที่แข่งขันได้สำหรับบริษัทที่กำลังมองหาโซลูชันการจัดการ Data Lake ที่ได้รับการปรับปรุง ภูเขาน้ำแข็งเอาชนะรูปแบบดั้งเดิมบางอย่าง เช่น Parquet หรือ ORC มีข้อดีที่โดดเด่นหลายประการ:
- วิวัฒนาการสคีมา: ผู้ใช้สามารถใช้ประโยชน์จากคุณลักษณะวิวัฒนาการสคีมาในขณะที่ดำเนินการเปลี่ยนแปลงสคีมาโดยไม่ต้องเขียนตารางใหม่ราคาแพง
- การแยกสแนปชอต: Iceberg ให้การสนับสนุนการแยกสแนปช็อต จึงรับประกันการอ่านและเขียนที่สอดคล้องกัน ช่วยให้แก้ไขตารางพร้อมกันได้โดยไม่กระทบต่อความสมบูรณ์ของข้อมูล
- การจัดการข้อมูลเมตา: คุณสมบัตินี้จะแยกข้อมูลเมตาออกจากไฟล์ข้อมูลโดยทั่วไป และจัดเก็บไว้ใน repo เฉพาะซึ่งแตกต่างจากไฟล์ข้อมูลเอง โดยทำเช่นนั้นเพื่อเพิ่มประสิทธิภาพและเพิ่มขีดความสามารถให้กับการดำเนินงานเมตาดาต้าที่มีประสิทธิภาพ
- การตัดแต่งกิ่งพาร์ติชั่น: ใช้ประโยชน์จากเทคนิคการตัดแต่งขั้นสูง โดยจะปรับประสิทธิภาพการสืบค้นให้เหมาะสมโดยการลดข้อมูลที่สแกนระหว่างการดำเนินการสืบค้น
การวิเคราะห์เปรียบเทียบสถาปัตยกรรม
ให้เราเจาะลึกเข้าไปในการวิเคราะห์เชิงเปรียบเทียบของสถาปัตยกรรม:
สถาปัตยกรรม Databricks Delta Lake
- ชั้นเก็บของ: Delta Lake ใช้ประโยชน์จากพื้นที่เก็บข้อมูลบนคลาวด์ เช่น Amazon S3, หยด Azure เป็นเลเยอร์พื้นฐานของการจัดเก็บข้อมูล ซึ่งประกอบด้วยทั้งไฟล์ข้อมูลและบันทึกธุรกรรม
- การจัดการข้อมูลเมตา: ข้อมูลเมตาอยู่ในบันทึกธุรกรรม ดังนั้นจึงนำไปสู่การดำเนินการเมตาดาต้าที่มีประสิทธิภาพและรับประกันความสอดคล้องของข้อมูล
- เทคนิคการเพิ่มประสิทธิภาพ: Delta Lake ใช้ประโยชน์จากตัน เทคนิคการเพิ่มประสิทธิภาพ- ซึ่งรวมถึงการข้ามข้อมูลและการจัดลำดับ Z เพื่อปรับปรุงประสิทธิภาพการสืบค้นอย่างมาก และลดค่าใช้จ่ายขณะสแกนข้อมูล
สถาปัตยกรรมภูเขาน้ำแข็งอาปาเช่
- การแยกข้อมูลเมตา: มีความแตกต่างเมื่อเปรียบเทียบกับ อิฐข้อมูล ในแง่ของการแยก metadata ออกจากไฟล์ข้อมูล ภูเขาน้ำแข็งเก็บข้อมูลเมตาในพื้นที่เก็บข้อมูลแยกต่างหากจากไฟล์ข้อมูล
- การสนับสนุนการทำธุรกรรม: เพื่อรับรองความสมบูรณ์และความน่าเชื่อถือของข้อมูล Iceberg มีโปรโตคอลธุรกรรมที่แข็งแกร่ง โปรโตคอลนี้รับประกันการดำเนินการตารางแบบอะตอมมิกและสม่ำเสมอ
- เข้ากันได้: เครื่องยนต์เช่น Apache Spark, Flink และ Presto สามารถใช้งานร่วมกับ Iceberg ได้อย่างง่ายดาย นักพัฒนามีความยืดหยุ่นในการใช้ Iceberg กับเฟรมเวิร์กการประมวลผลแบบเรียลไทม์และแบบแบตช์เหล่านี้
การนำทางภูมิทัศน์การย้ายถิ่น: ข้อควรพิจารณาและแนวทางปฏิบัติที่ดีที่สุด
จำเป็นต้องมีการวางแผนและการดำเนินการจำนวนมหาศาลเพื่อดำเนินการโยกย้ายจาก Databricks Delta Lake ไปยัง Apache Iceberg ควรพิจารณาบางประการ ได้แก่:
- วิวัฒนาการสคีมา: รับประกันความเข้ากันได้ที่ไร้ที่ติระหว่างคุณลักษณะวิวัฒนาการสคีมาของ Delta Lake และ Iceberg เพื่อรักษาความสอดคล้องระหว่างการเปลี่ยนแปลงสคีมา
- การโยกย้ายข้อมูล: กลยุทธ์ควรได้รับการพัฒนาและสอดคล้องกับปัจจัยต่างๆ เช่น ปริมาณข้อมูล ข้อกำหนดการหยุดทำงาน และความสอดคล้องของข้อมูล
- ความเข้ากันได้ของแบบสอบถาม: ควรตรวจสอบความเข้ากันได้ของแบบสอบถามระหว่าง Delta Lake และ Iceberg ซึ่งจะนำไปสู่การเปลี่ยนแปลงที่ราบรื่นและฟังก์ชันการสืบค้นที่มีอยู่จะยังคงเหมือนเดิมหลังการโยกย้าย
- ประสิทธิภาพ การทดสอบ: เริ่มต้นการทดสอบประสิทธิภาพและการถดถอยที่ครอบคลุมเพื่อตรวจสอบประสิทธิภาพของคิวรี ควรตรวจสอบการใช้ทรัพยากรระหว่างภูเขาน้ำแข็งและทะเลสาบเดลต้า ด้วยวิธีนี้ จึงสามารถรับรู้พื้นที่ที่มีศักยภาพเพื่อการปรับให้เหมาะสมได้
สำหรับการย้ายข้อมูล นักพัฒนาสามารถใช้โครงร่างโค้ดที่กำหนดไว้ล่วงหน้าบางส่วนจากเอกสาร Iceberg และ Databricks และนำไปใช้งานแบบเดียวกัน มีการกล่าวถึงขั้นตอนด้านล่างและภาษาที่ใช้ในที่นี้คือ Scala:
ขั้นตอนที่ 1: สร้างตาราง Delta Lake
ในขั้นตอนเริ่มต้น ตรวจสอบให้แน่ใจว่าบัคเก็ต S3 ว่างเปล่าและตรวจสอบแล้ว ก่อนที่จะดำเนินการสร้างข้อมูลภายในนั้น เมื่อกระบวนการสร้างข้อมูลเสร็จสมบูรณ์ ให้ดำเนินการตรวจสอบต่อไปนี้:
val data=spark.range(0,5)
data.write.format("delta").save("s3://testing_bucket/delta-table")
spark.read.format("delta").load("s3://testing_bucket/delta-table")
การเพิ่มรหัสสูญญากาศเสริม
#adding optional code for vaccum later
val data=spark.range(5,10)
data.write.format("delta").mode("overwrite").save("s3://testing_bucket/delta-table")
ขั้นตอนที่ 2: CTAS และการอ่านตาราง Delta Lake
#reading delta lake table
spark.read.format("delta").load("s3://testing_bucket/delta-table")
ขั้นตอนที่ 3: อ่าน Delta Lake และเขียนลงในตารางภูเขาน้ำแข็ง
val df_delta=spark.read.format("delta").load("s3://testing_bucket/delta-table")
df_delta.writeTo("test.db.iceberg_ctas").create()
spark.read.format("iceberg").load("test.db.iceberg.ctas)
ตรวจสอบข้อมูลที่ทิ้งลงในตารางภูเขาน้ำแข็งภายใต้ S3
การเปรียบเทียบเครื่องมือของบุคคลที่สามในแง่ของความเรียบง่าย ประสิทธิภาพ ความเข้ากันได้ และการสนับสนุน เครื่องมือทั้งสองอย่างได้แก่ AWS Glue DataBrew และ Snowflake มาพร้อมกับชุดฟังก์ชันของตัวเอง
AWS กาว DataBrew
กระบวนการย้ายข้อมูล:
- ใช้งานง่าย: AWS Glue DataBrew เป็นผลิตภัณฑ์ภายใต้ AWS cloud และมอบประสบการณ์ที่เป็นมิตรต่อผู้ใช้สำหรับงานล้างข้อมูลและการเปลี่ยนแปลง
- บูรณาการ: Glue DataBrew สามารถผสานรวมกับบริการคลาวด์อื่นๆ ของ Amazon ได้อย่างราบรื่น สำหรับองค์กรที่ทำงานร่วมกับ AWS สามารถใช้บริการนี้ได้
ชุดคุณลักษณะ:
- การแปลงข้อมูล: มาพร้อมกับคุณสมบัติมากมายสำหรับการแปลงข้อมูล (EDA) อาจมีประโยชน์ในระหว่างการย้ายข้อมูล
- การทำโปรไฟล์อัตโนมัติ: เช่นเดียวกับเครื่องมือโอเพ่นซอร์สอื่นๆ DataBrew จะทำโปรไฟล์ข้อมูลโดยอัตโนมัติ เพื่อตรวจจับความไม่สอดคล้องกันและแนะนำงานการแปลงด้วย
ประสิทธิภาพและความเข้ากันได้:
- scalability: สำหรับการประมวลผลชุดข้อมูลขนาดใหญ่ที่สามารถพบได้ในระหว่างกระบวนการย้ายข้อมูล Glue DataBrew มอบความสามารถในการปรับขนาดเพื่อจัดการสิ่งนั้นเช่นกัน
- ความเข้ากันได้: ให้ความเข้ากันได้กับชุดรูปแบบและแหล่งข้อมูลที่กว้างขึ้น จึงอำนวยความสะดวกในการผสานรวมกับโซลูชันการจัดเก็บข้อมูลที่หลากหลาย
เกล็ดหิมะ
กระบวนการย้ายข้อมูล:
- ความสะดวกในการโยกย้าย: เพื่อความเรียบง่าย Snowflake มีบริการย้ายข้อมูลซึ่งช่วยให้ผู้ใช้ปลายทางย้ายจากคลังข้อมูลที่มีอยู่ไปยังแพลตฟอร์ม Snowflake
- เอกสารประกอบ: Snowflake มอบเอกสารมากมายและทรัพยากรจำนวนเพียงพอเพื่อเริ่มต้นกระบวนการย้ายข้อมูล
ชุดคุณลักษณะ:
- ความสามารถในการจัดเก็บข้อมูล: มีชุดคุณสมบัติคลังสินค้าที่กว้างขึ้น และรองรับข้อมูลกึ่งโครงสร้าง การแบ่งปันข้อมูล และการกำกับดูแลข้อมูล
- เห็นพ้องด้วย: สถาปัตยกรรมช่วยให้เกิดการทำงานพร้อมกันได้สูง ซึ่งเหมาะสำหรับองค์กรที่มีข้อกำหนดในการประมวลผลข้อมูลที่มีความต้องการสูง
ประสิทธิภาพและความเข้ากันได้:
- ประสิทธิภาพ: Snowflake ยังมีประสิทธิภาพที่มีประสิทธิภาพในแง่ของความสามารถในการปรับขนาด ซึ่งช่วยให้ผู้ใช้ปลายทางสามารถประมวลผลข้อมูลปริมาณมากได้อย่างง่ายดาย
- ความเข้ากันได้: Snowflake ยังมีตัวเชื่อมต่อที่หลากหลายสำหรับแหล่งข้อมูลที่แตกต่างกัน จึงรับประกันความเข้ากันได้ข้ามกับระบบนิเวศของข้อมูลที่หลากหลาย
สรุป
เพื่อเพิ่มประสิทธิภาพเวิร์กโฟลว์ Data Lake และการจัดการคลังสินค้า และดึงผลลัพธ์ทางธุรกิจ การเปลี่ยนแปลงถือเป็นสิ่งสำคัญสำหรับองค์กร อุตสาหกรรมต่างๆ สามารถใช้ประโยชน์จากทั้งสองแพลตฟอร์มในแง่ของความสามารถและความแตกต่างทางสถาปัตยกรรมและทางเทคนิค และตัดสินใจว่าจะเลือกใช้ศักยภาพสูงสุดของชุดข้อมูลของตนอย่างไร ยังช่วยองค์กรในระยะยาวอีกด้วย ด้วยภูมิทัศน์ของข้อมูลที่เปลี่ยนแปลงอย่างรวดเร็วและรวดเร็ว โซลูชันที่เป็นนวัตกรรมสามารถช่วยให้องค์กรก้าวไปข้างหน้าได้
ประเด็นที่สำคัญ
- Apache Iceberg นำเสนอคุณสมบัติที่ยอดเยี่ยม เช่น การแยกสแน็ปช็อต การจัดการข้อมูลเมตาที่มีประสิทธิภาพ การตัดพาร์ติชัน จึงนำไปสู่การปรับปรุงความสามารถในการจัดการ Data Lake
- การย้ายไปยัง Apache Iceberg เกี่ยวข้องกับการวางแผนและการดำเนินการอย่างระมัดระวัง องค์กรควรพิจารณาปัจจัยต่างๆ เช่น วิวัฒนาการของสคีมา กลยุทธ์การย้ายข้อมูล และความเข้ากันได้ของคิวรี
- Databricks Delta Lake ใช้ประโยชน์จากพื้นที่จัดเก็บข้อมูลบนคลาวด์เป็นชั้นพื้นที่จัดเก็บข้อมูลที่สำคัญ โดยจัดเก็บไฟล์ข้อมูลและบันทึกธุรกรรม ในขณะที่ Iceberg แยกข้อมูลเมตาออกจากไฟล์ข้อมูล เพิ่มประสิทธิภาพและความสามารถในการปรับขนาด
- องค์กรควรพิจารณาถึงผลกระทบทางการเงิน เช่น ต้นทุนการจัดเก็บข้อมูล ค่าใช้จ่ายในการประมวลผล ค่าธรรมเนียมใบอนุญาต และทรัพยากรเฉพาะกิจที่จำเป็นสำหรับการย้ายข้อมูล
คำถามที่พบบ่อย
ตอบ: เกี่ยวข้องกับการส่งออกข้อมูลจาก Databricks Delta Lake ทำความสะอาดหากจำเป็น จากนั้นนำเข้าลงในตาราง Apache Iceberg
ตอบ โดยทั่วไปองค์กรต่างๆ จะใช้ประโยชน์จากสคริปต์ Python/Scala แบบกำหนดเองและเครื่องมือ ETL เพื่อสร้างเวิร์กโฟลว์นี้
ตอบ ความท้าทายบางประการที่อาจจะเกิดขึ้นอย่างมาก ได้แก่ ความสอดคล้องของข้อมูล การจัดการความแตกต่างในการพัฒนาสคีมา และการเพิ่มประสิทธิภาพหลังการย้ายข้อมูล
A. Apache Iceberg มีคุณสมบัติต่างๆ เช่น วิวัฒนาการของสคีมา การแยกสแนปช็อต และการจัดการเมตาดาต้าที่มีประสิทธิภาพ ซึ่งแตกต่างจาก Parquet และ ORC
ตอบ แน่นอนว่า Apache Iceberg เข้ากันได้กับโซลูชันการจัดเก็บข้อมูลบนระบบคลาวด์ที่ใช้กันทั่วไป เช่น AWS S3, Azure Blob Storage และ Google Cloud Storage
สื่อที่แสดงในบทความนี้ไม่ได้เป็นของ Analytics Vidhya และถูกใช้ตามดุลยพินิจของผู้เขียน
- เนื้อหาที่ขับเคลื่อนด้วย SEO และการเผยแพร่ประชาสัมพันธ์ รับการขยายวันนี้
- PlatoData.Network Vertical Generative Ai เพิ่มพลังให้กับตัวเอง เข้าถึงได้ที่นี่.
- เพลโตไอสตรีม. Web3 อัจฉริยะ ขยายความรู้ เข้าถึงได้ที่นี่.
- เพลโตESG. คาร์บอน, คลีนเทค, พลังงาน, สิ่งแวดล้อม แสงอาทิตย์, การจัดการของเสีย. เข้าถึงได้ที่นี่.
- เพลโตสุขภาพ เทคโนโลยีชีวภาพและข่าวกรองการทดลองทางคลินิก เข้าถึงได้ที่นี่.
- ที่มา: https://www.analyticsvidhya.com/blog/2024/03/guide-to-migrating-from-databricks-delta-lake-to-apache-iceberg/