AWS Glue เครื่องมือจัดการ ETL

Mart — Tanathip Viriya
2 min readDec 21, 2020

--

เป็นเครื่องมือที่ fully-managed โดย AWS services ที่ช่วยในการจัดการ ETL (Extract-Transform-Load)

หรือถ้าพูดง่ายๆ คือ มันเป็นเครื่องมือที่ช่วยเรา แยกข้อมูล-แปลงข้อมูล-จัดเก็บข้อมูล จากจุด A มายังจุด B ให้เรา เช่น ข้อมูลของสายการบินว่ามียอดผู้ใช้บริการเท่าไรต่อปี เราต้องการเอาข้อมูลนี้มาเก็บบน AWS แต่ข้อมูลของสายการบินอยู่ในรูปแบบที่ไม่เป็นมาตราฐานกับบริษัทเรา เราก็ใช้ Glue นี้แหละในการแปลง/ทําความสะอาดข้อมูลแล้วเอาเข้าระบบเราได้

Concept หลักๆของ Glue

Glue จะมีผู้เล่นหลักๆที่ต้องเข้าใจอยู่ 3 ตัว คือ

  • Crawler
  • Data Catalog
  • Job

โดยก่อนจะลงรายละเอียดต้องเข้าใจคําว่า Data source และ Target Data source หลักๆแล้ว Data source คือข้อมูลจุด A เช่นสายการบินที่อ้างอิงตามข้างบน และ Target Data source คือปลายทางที่หลังจากเราแปลงข้อมูล หรือ ทําความสะอาดข้อมูลแล้วมันจะไปเก็บไว้

ทีนี้ทั้ง 3 ตัวมีหน้าที่ของมันชัดเจนคือ Crawler จะเป็นที่ตัวไปจัดการสร้าง Data Catalog (มองเป็น table แบบ RDMS จะเข้าใจง่ายขึ้น) โดยที่มันสามารถไป crawl จากหลายๆๆ data sources ได้ในทีเดียว

โดย output ของมันที่ออกมา Data Catalog คือตัวสําคัญเลยเพราะมันคือ metadata ของ Data source นั้นๆ เช่นยกตัวอย่างข้อมูลของสายการบินจะมีการเก็บ วันที่บิน,จํานวนผู้ใช้บริการ,สนามบิน พวกนี้จะเรียกว่า metadata ของ Data sources ซึ่งจะมีผลไว้ในการ query ข้อมูลในอนาคต หรือ เป็นโครงสร้างของ Data sources นั้นและเมื่อเกิดการเปลี่ยนแปลง Data Catalog ก็จะต้องมีการเปลี่ยนตามโดยมีการทํา versioning ไว้ด้วย เราจึงเรียกได้ว่า Data Catalog เปรียบเสมือน metadata repository ได้เลย!

https://docs.aws.amazon.com/glue/latest/dg/populate-data-catalog.html

หลังจากเรามีเจ้าตัวหลัก Data Catalog แล้ว เราก็แค่สร้าง Jobs ที่จะมาทําหน้าที่เป็น Business logic ที่จะทําการ ETL กับข้อมูลของเราได้เลย นี้คือจังหวะ Transform ข้อมูลนั้นเอง โดย Glue มันลองรับ Python, Scala (Spark) ที่เป็นตัวหลักในการใช้ Transform Data อยู่แล้วด้วย

https://docs.aws.amazon.com/glue/latest/dg/author-job.html

แล้วข้อมูลที่เรา ETL มาแล้วเอาไปทําอะไร?

คําตอบขึ้นอยู่กับ Design ที่เราวางไว้ขึ้นกับ context ของแต่ระบบที่เรากําลังทํา แต่โดยเบื้องต้นแล้ว เราสามารถเอาข้อมูลเหล่านั้นไป

  • Query ด้วย Amazon Athena (แต่ target Data sources ต้องเป็น S3 นะ)
  • เอาไปใช้ร่วมกับ Amazon Quicksight ที่เป็น BI tool หรือสร้าง report
  • เอาข้อมูลไปลง Amazon Redshift ที่เป็น Data warehouse , Amazon EMR (Hadoop Ecosyste) เพื่อทําการวิเคราะห์ข้อมูล insights
  • หรือเอาไปลง Elasticsearch ไปเลย เพื่อทําการ search ข้อมูลของ Data นั้นให้ง่ายขึ้นก็ยังได้ (แต่ต้องใช้ AWS Glue Elastic View — Preview) ซึ่งมันดีมากเลยนะ เพราะว่าจะสามารถ scale ได้เอง, ลดเวลา maintain และ development ลงไปมากๆ (จิตนการเราต้องจัดการ index ใน elasticsearch เอง โดยการ load ข้อมูลเข้าไปใน cluster on-premise/cloud สิ..เป็นอะไรที่เหนื่อยแน่นอน)

--

--