การสร้าง Data Pipeline ด้วย Apache Spark Declarative Pipelines บน Databricks
วันที่เขียน 9/9/2569 3:44:38     แก้ไขล่าสุดเมื่อ 18/10/2569 11:04:35
เปิดอ่าน: 69 ครั้ง

การสร้าง Data Pipeline ด้วย Apache Spark Declarative Pipelines (Delta Live Tables) บน Databricks เป็นแนวทางที่เน้นการกำหนดผลลัพธ์ปลายทางที่ต้องการ (What) แทนการเขียนคำสั่งควบคุมทีละขั้นตอน (How) ระบบจะบริหารจัดการโครงสร้างพื้นฐาน ลำดับการประมวลผล และการตรวจสอบคุณภาพข้อมูลให้อัตโนมัติ แนวทางนี้ช่วยลดความซับซ้อนของโค้ด รองรับทั้งข้อมูลแบบ Batch และ Streaming ทำให้วิศวกรข้อมูลสามารถพัฒนาระบบและส่งมอบข้อมูลที่พร้อมใช้งานทางธุรกิจได้อย่างรวดเร็ว ถูกต้อง และมีเสถียรภาพ

1. Databricks คืออะไร?

Databricks คือแพลตฟอร์มวิเคราะห์ข้อมูลแบบรวมศูนย์ (Unified Data Analytics Platform) ที่พัฒนาขึ้นโดยทีมผู้สร้าง Apache Spark โดยมีสถาปัตยกรรมหลักที่เรียกว่า Lakehouse ซึ่งเป็นการนำข้อดีของ Data Lake (เก็บข้อมูลได้ทุกประเภท ขยายขนาดได้ง่าย คุ้มค่า) มารวมกับ Data Warehouse (การจัดการข้อมูลอย่างมีโครงสร้าง มีประสิทธิภาพในการคิวรี และรองรับ ACID Transactions)

แพลตฟอร์มนี้ทำงานอยู่บน Cloud (เช่น AWS, Azure, GCP) มีหน้าที่หลักในการจัดการโครงสร้างพื้นฐาน (Infrastructure) และคลัสเตอร์สำหรับการประมวลผล Big Data โดยอัตโนมัติ ทำให้นักพัฒนา (Data Engineer, Data Scientist, Data Analyst) สามารถเข้ามาทำงานร่วมกันในพื้นที่เดียว (Workspace) ได้อย่างมีประสิทธิภาพ โดยไม่ต้องกังวลเรื่องการตั้งค่าเซิร์ฟเวอร์หรือการจูนระบบที่ซับซ้อน

2. Apache Spark Declarative Pipelines (ใน Databricks คือ Delta Live Tables)

เมื่อพูดถึงหัวข้อ "Build Data Pipelines with Apache Spark Declarative Pipelines" บน Databricks เรากำลังพูดถึงเครื่องมือที่เรียกว่า Delta Live Tables (DLT)

ในอดีต การเขียน Data Pipeline จะเป็นแบบ Imperative คือนักพัฒนาต้องเขียนโค้ดระบุ "วิธีการ (How)" ทีละขั้นตอน เช่น ดึงข้อมูลมาอย่างไร จัดการคลัสเตอร์อย่างไร ถ้าพังจะรันใหม่ตรงไหน และเขียนข้อมูลลงตารางอย่างไร ซึ่งมีความซับซ้อนและดูแลรักษายาก

แนวคิดแบบ Declarative Pipelines คือการเปลี่ยนมาบอกระบบแค่ว่า "เราต้องการอะไร (What)" เท่านั้น โดยนักพัฒนาเพียงแค่ "ประกาศ" (Declare) ว่าตารางปลายทางควรมีหน้าตาแบบไหน และดึงข้อมูลมาจากไหน ส่วนงานที่เหลือ ระบบจัดการให้ทั้งหมด ได้แก่:

  • Orchestration & DAG: สร้างลำดับการประมวลผล (Dependency Graph) ให้อัตโนมัติ ว่าต้องรันตารางไหนก่อนหลัง

  • Infrastructure Management: จัดการขนาดของคลัสเตอร์ และสเกลระบบตามปริมาณข้อมูลให้อัตโนมัติ

  • Data Quality (Expectations): ฝังการตรวจสอบคุณภาพข้อมูล (Data Quality Rules) ไว้ใน Pipeline ได้เลย หากข้อมูลผิดปกติสามารถเลือกได้ว่าจะ ทิ้ง (Drop), แจ้งเตือน (Warn), หรือหยุดการทำงาน (Fail)

  • Batch & Streaming Unification: จัดการข้อมูลทั้งแบบ Batch และ Streaming ได้ด้วยโครงสร้างโค้ดเดียวกัน

3. ตัวอย่างการทำงาน (Code Example)

สถาปัตยกรรมที่นิยมใช้ร่วมกับ Declarative Pipelines คือ Medallion Architecture (Bronze: ข้อมูลดิบ, Silver: ข้อมูลที่ทำความสะอาดแล้ว, Gold: ข้อมูลพร้อมใช้สำหรับ Business/BI)

ด้านล่างนี้คือตัวอย่างการเขียน Delta Live Tables (DLT) ด้วย PySpark โดยใช้แนวคิด Declarative

import dlt
from pyspark.sql.functions import *

# ---------------------------------------------------------
# Bronze Layer: Ingest Raw Data
# ---------------------------------------------------------
@dlt.table(
    name="bronze_sales",
    comment="Raw sales data loaded from cloud storage in real-time."
)
def bronze_sales():
    # Read raw JSON data streams using Databricks Auto Loader
    return (spark.readStream.format("cloudFiles")
            .option("cloudFiles.format", "json")
            .load("/mnt/raw-data/sales/"))

# ---------------------------------------------------------
# Silver Layer: Clean Data & Apply Data Quality Rules
# ---------------------------------------------------------
@dlt.table(
    name="silver_sales",
    comment="Cleaned sales data with Data Quality expectations applied."
)
# Expectation: Drop the record if order_id is null
@dlt.expect_or_drop("valid_order_id", "order_id IS NOT NULL")
# Expectation: Fail the entire pipeline if amount is less than or equal to 0
@dlt.expect_or_fail("valid_amount", "amount > 0")
def silver_sales():
    # Read as a stream from the Bronze table and add a processing timestamp
    return (dlt.read_stream("bronze_sales")
            .withColumn("processed_time", current_timestamp()))

# ---------------------------------------------------------
# Gold Layer: Aggregate Data for Business / Dashboard
# ---------------------------------------------------------
@dlt.table(
    name="gold_daily_sales_summary",
    comment="Aggregated daily sales ready for BI dashboards."
)
def gold_daily_sales():
    # Read from Silver table and aggregate total sales by date
    return (dlt.read("silver_sales")
            .groupBy("order_date")
            .agg(sum("amount").alias("total_daily_sales")))

อธิบายจากตัวอย่าง: จากโค้ดด้านบน เราจะเห็นว่าเราไม่ต้องเขียนโค้ดเพื่อตั้งเวลาการรัน (Cron Job) ไม่ต้องเขียนโค้ดจัดการ Checkpoint สำหรับข้อมูล Streaming และไม่ต้องเขียนโค้ดเพื่อเช็คว่าต้องรัน bronze ให้เสร็จก่อนจึงจะมารัน silver ได้ เพราะ dlt.read() จะทำหน้าที่สร้างความสัมพันธ์ (Dependencies) ให้โดยอัตโนมัติ การพัฒนา Pipeline จึงสั้นลง อ่านเข้าใจง่าย และมีความน่าเชื่อถือมากขึ้นอย่างมาก

 

คำสำคัญ :
กลุ่มบทความ :
หมวดหมู่ :
แชร์ :
https://erp.mju.ac.th/acticleDetail.aspx?qid=1737
ความคิดเห็นทั้งหมด (0)
ไม่มีข้อมูลตามเงื่อนไขที่ท่านกำหนด
รายการบทความการแลกเปลี่ยนเรียนรู้หมวดหมู่ : กลุ่มงานสายวิชาการ
AI for Modern Educators สำหรับอาจารย์ผู้สอนและบุคลากรสายวิชาการ » AI for Modern Educators สำหรับอาจารย์ผู้สอนและบุคลากรสายวิชาการ
การประยุกต์ใช้ AI เพื่อการจัดการเรียนการสอนและการวิจัยสำหรับ โครงการฝึกอบรมเชิงปฏิบัติการหลักสูตร AI for Modern Educators สำหรับอาจารย์ผู้สอนและบุคลากรสายวิชาการ การใช้ประยุกต์เพื่อเป็นแนวทางกา...
AI  สายวิชาการ     กลุ่มงานตามสมรรถนะบุคลากร   กลุ่มงานสายวิชาการ
ผู้เขียน ฐิติพรรณ ฉิมสุข  วันที่เขียน 2/10/2569 13:20:03  แก้ไขล่าสุดเมื่อ 18/10/2569 10:56:06   เปิดอ่าน 88  ครั้ง | แสดงความคิดเห็น 0  ครั้ง
การเผยแพร่ความรู้ที่ได้รับจากการอบรม » ความรู้ที่ได้รับจากการเข้าร่วมอบรมในโครงการพัฒนาสมรรถนะด้าน (AI) ให้กับบุคลากรและนักศึกษา มหาวิทยาลัยแม่โจ้
ปัจจุบันปัญญาประดิษฐ์ (AI) มีบทบาทสำคัญในการช่วยพัฒนาการเรียนการสอนให้มีประสิทธิภาพและสอดคล้องกับผู้เรียนในยุคดิจิทัลมากขึ้น AI สามารถช่วยผู้สอนในการจัดทำเนื้อหา สื่อการเรียนรู้ กิจกรรม และแบบประเม...
การพัฒนาสมรรถนะด้าน (AI)  การพัฒนาสื่อการสอน     กลุ่มงานตามสมรรถนะบุคลากร   กลุ่มงานสายวิชาการ
ผู้เขียน รุ่งกานต์ ใจวงค์ยะ  วันที่เขียน 28/9/2569 9:58:28  แก้ไขล่าสุดเมื่อ 18/10/2569 10:56:50   เปิดอ่าน 290  ครั้ง | แสดงความคิดเห็น 0  ครั้ง
องค์ความรู้ » การเข้าร่วมโครงการพัฒนาสมรรถนะด้าน (AI) ให้กับบุคลากรและนักศึกษา มหาวิทยาลัยแม่โจ้
การเข้าร่วมโครงการพัฒนาสมรรถนะด้านปัญญาประดิษฐ์ (AI) สำหรับบุคลากรและนักศึกษา มหาวิทยาลัยแม่โจ้ ในหัวข้อ “การประยุกต์ใช้ AI เพื่อการเรียนการสอน การจัดทำเอกสารประกอบการสอนและตำราให้เข้าถึงผู้เรียนยุ...
การใช้ AI  การพัฒนาสื่อการสอน  สมรรถนะด้าน AI     กลุ่มงานตามสมรรถนะบุคลากร   กลุ่มงานสายวิชาการ
ผู้เขียน รัชนีวรรณ วงศ์พระจันทร์  วันที่เขียน 23/9/2569 15:58:21  แก้ไขล่าสุดเมื่อ 18/10/2569 10:41:23   เปิดอ่าน 105  ครั้ง | แสดงความคิดเห็น 0  ครั้ง
เกมการเงิน: นวัตกรรมการเรียนรู้เพื่อพัฒนาความรู้ทางการเงินและส่งเสริมการบริการวิชาการสู่สังคม » บทนำ ในยุคที่สภาพแวดล้อมทางเศรษฐกิจและการเงินมีการเปลี่ยนแปลงอย่างรวดเร็ว ประชาชนจำเป็นต้องเผชิญกับการตัดสินใจทางการเงินที่ซับซ้อนมากขึ้น ไม่ว่าจะเป็นการวางแผนการใช้จ่าย การบริหารหนี้สิน การออม การลงทุน และการบริหารความเสี่ยงทางการเงิน ความรู้ทางการเงิน (Financial Literacy) จึงกลายเป็นทักษะที่สำคัญต่อการดำรงชีวิตและการสร้างความมั่นคงทางเศรษฐกิจของบุคคลและครัวเรือน อย่างไรก็ตาม การพัฒนาความรู้ทางการเงินผ่านการเรียนการสอนแบบบรรยายเพียงอย่างเดียวอาจไม่สามารถสร้างความเข้าใจและเปลี่ยนแปลงพฤติกรรมทางการเงินได้อย่างมีประสิทธิภาพ ดังนั้น การนำแนวคิดการเรียนรู้เชิงประสบการณ์ (Experiential Learning) และการจัดการเรียนรู้แบบเกม (Game-Based Learning) มาประยุกต์ใช้ จึงเป็นอีกแนวทางหนึ่งที่ช่วยให้ผู้เรียนสามารถเรียนรู้ผ่านการลงมือปฏิบัติ การคิดวิเคราะห์ และการตัดสินใจในสถานการณ์จำลองที่ใกล้เคียงกับชีวิตจริง เกม การเงิน (Financial Games) จึงได้รับการยอมรับว่าเป็นนวัตกรรมการเรียนรู้ที่ช่วยส่งเสริมความรู้ ทักษะ และพฤติกรรมทางการเงินได้อย่างมีประสิทธิภาพ ทั้งในระบบการศึกษาและการบริการวิชาการแก่สังคม ความสำคัญของเกมการเงิน เกมการเงินเป็นเครื่องมือการเรียนรู้ที่ออกแบบให้ผู้เรียนได้มีส่วนร่วมในการแก้ปัญหาและตัดสินใจทางการเงินภายใต้เงื่อนไขหรือสถานการณ์จำลองต่าง ๆ ซึ่งช่วยให้ผู้เรียนสามารถเชื่อมโยงองค์ความรู้ทางทฤษฎีกับการประยุกต์ใช้ในชีวิตจริงได้อย่างเป็นรูปธรรม การเรียนรู้ผ่านเกมช่วยส่งเสริมให้ผู้เรียนเกิดความเข้าใจในประเด็นทางการเงินที่สำคัญ ได้แก่ การวางแผนการเงิน การบริหารรายรับรายจ่าย การจัดการหนี้สิน การออม การลงทุน และการบริหารความเสี่ยง นอกจากนี้ยังช่วยพัฒนาทักษะการคิดวิเคราะห์ การตัดสินใจ การแก้ปัญหา และการทำงานร่วมกับผู้อื่น ซึ่งเป็นทักษะสำคัญในศตวรรษที่ 21 ด้วยเหตุนี้ เกมการเงินจึงไม่ได้เป็นเพียงกิจกรรมเพื่อความสนุกสนาน แต่เป็นเครื่องมือที่ช่วยสร้างประสบการณ์การเรียนรู้ที่สามารถนำไปสู่การเปลี่ยนแปลงพฤติกรรมทางการเงินของผู้เรียนได้อย่างมีประสิทธิผล บอร์ดเกมการเงินในปัจจุบัน บริษัท ฟินไดซ์ เอ็ดดูเคชั่น จำกัด เป็นผู้พัฒนาเกมการเงินที่มุ่งเน้นการสร้างการเรียนรู้ผ่านประสบการณ์จริง โดยออกแบบเกมให้สอดคล้องกับสถานการณ์ทางการเงินที่บุคคลต้องเผชิญในชีวิตประจำวัน ซึ่งประกอบด้วยเกมสำคัญ ดังนี้ 1. Calculate your net worth รู้หน้าไม่รู้หนี้ เกมรู้หน้าไม่รู้หนี้มุ่งเน้นการสร้างความเข้าใจเกี่ยวกับภาระหนี้สินและสถานะทางการเงินที่แท้จริงของบุคคล เกมนี้จะช่วยฝึกทักษะการบริหารสินทรัพย์ การคำนวณความมั่งคั่งสุทธิ และการจัดการสภาพคล่อง ผ่านการจำลองชีวิตจริงได้ 2. Shop Me Please ซื้อฉันเถอะ เกมซื้อฉันเถอะเป็นเกมที่จำลองสถานการณ์การเลือกซื้อสินค้าและบริการภายใต้งบประมาณที่จำกัด ผู้เล่นจะต้องพิจารณาความจำเป็น ความคุ้มค่า และผลกระทบจากการใช้จ่ายแต่ละรายการ เกมนี้ช่วยพัฒนาทักษะการวางแผนการใช้จ่าย การจัดลำดับความสำคัญทางการเงิน และการตัดสินใจบริโภคอย่างมีเหตุผล 3. Risky Lossy มีฉันไว้ อุ่นใจนะ Risky Lossy เป็นเกมที่เสริมสร้างความเข้าใจด้านการบริหารความเสี่ยงและการประกันภัย โดยเฉพาะ ช่วยให้ผู้เล่นเข้าใจว่าการโอนย้ายความเสี่ยงด้วยประกันสามารถปกป้องความมั่งคั่งในชีวิตจริงได้ เน้นการเรียนรู้เรื่องความเสี่ยงและผลตอบแทน 4. The Next Step บันไดภาษี The Next Step เป็นบอร์ดเกมจำลองสถานการณ์ภาษีเงินได้บุคคลธรรมดาที่ออกแบบโดย Findice โดยจำลองกระแสรายได้ รายจ่าย และให้ผู้เล่นวางแผนใช้สิทธิลดหย่อนภาษี เป้าหมายหลักของเกมคือการทำความเข้าใจโครงสร้างอัตราภาษีแบบก้าวหน้าเพื่อหลีกเลี่ยงการเสียภาษีเกินความจำเป็น 5. Trade In Trade Out แลกไปแลกมา Trade In Trade Out เป็นการ์ดเกมและบอร์ดเกมจำลองสถานการณ์การแลกเปลี่ยนสิ่งของ (Barter System) ออกแบบมาเพื่อสอนพื้นฐานการเงิน การต่อรอง และความสำคัญของการประเมินมูลค่าสิ่งของ โดยไม่มีเงินตราเป็นสื่อกลาง ผู้เล่นจะต้องสวมบทบาทในยุคที่ยังไม่มีเงินสด และต้องใช้วิธีนำสิ่งของที่มีอยู่ไปแลกเปลี่ยนกับผู้เล่นคนอื่นเพื่อให้ได้ไอเทมที่ต้องการ 6. Trader Hunter หุ้นซิ่งทะลุกระดาน Trader Hunterเป็นเกมจำลองการลงทุนในตลาดหุ้นที่ เกมนี้ช่วยให้ผู้เล่นได้ปูพื้นฐานการลงทุนในหุ้น 8 กลุ่มอุตสาหกรรม เรียนรู้การทำกำไรทั้งสายเก็งกำไรระยะสั้น (Day Trade) และสายออมหุ้นระยะยาวเพื่อรับปันผล (Value Investor) พร้อมสร้างความเข้าใจเรื่องการกระจายความเสี่ยง การวิเคราะห์ข้อมูล และการรับมือกับข่าวสารเหตุการณ์โลกที่มีผลกระทบต่อราคาหุ้น โดยเป้าหมายหลักคือการเรียนรู้วิธีบริหารพอร์ตการลงทุนและเสริมสร้างความเข้าใจเกี่ยวกับการลงทุนอย่างมีเหตุผลและการบริหารความเสี่ยงในการลงทุน การประยุกต์ใช้เกมการเงินในงานการศึกษา เกมการเงินสามารถนำมาประยุกต์ใช้ในการจัดการเรียนการสอนทั้งในระดับมัธยมศึกษา อาชีวศึกษา และอุดมศึกษา โดยเฉพาะในสาขาการเงิน การบัญชี เศรษฐศาสตร์ และบริหารธุรกิจ เนื่องจากช่วยให้ผู้เรียนสามารถเรียนรู้ผ่านการปฏิบัติจริงมากกว่าการจดจำเนื้อหาเชิงทฤษฎี การใช้เกมการเงินในชั้นเรียนช่วยส่งเสริมรูปแบบการเรียนรู้แบบ Active Learning ทำให้ผู้เรียนมีส่วนร่วมในการเรียนรู้มากขึ้น อีกทั้งยังช่วยพัฒนาทักษะการคิดวิเคราะห์ การแก้ปัญหา การสื่อสาร และการทำงานเป็นทีม นอกจากนี้ ผู้สอนยังสามารถใช้เกมเป็นกรณีศึกษาเพื่อเชื่อมโยงกับเนื้อหารายวิชาต่าง ๆ เช่น การวางแผนการเงินส่วนบุคคล การบริหารความเสี่ยง การลงทุน และการเป็นผู้ประกอบการ โดยผลลัพธ์ที่สำคัญคือผู้เรียนสามารถพัฒนาความรู้ทางการเงินควบคู่กับการพัฒนาทักษะที่จำเป็นต่อการทำงานและการดำรงชีวิตในอนาคต การประยุกต์ใช้เกมการเงินในงานบริการวิชาการ นอกจากประโยชน์ด้านการศึกษาแล้ว เกมการเงินยังสามารถนำไปใช้เป็นเครื่องมือสำคัญในการดำเนินงานบริการวิชาการแก่สังคม โดยเฉพาะการส่งเสริมความรู้ทางการเงินให้แก่ประชาชน นักเรียน ผู้ประกอบการ วิสาหกิจ
  กลุ่มงานตามสมรรถนะบุคลากร   กลุ่มงานสายวิชาการ
ผู้เขียน ประภาพร กิจดำรงธรรม  วันที่เขียน 16/9/2569 15:58:17  แก้ไขล่าสุดเมื่อ 17/10/2569 12:10:58   เปิดอ่าน 94  ครั้ง | แสดงความคิดเห็น 0  ครั้ง