Tools
เครื่องมือต่างๆ ในโลก Data Engineering
Airbyte
Airbyte เป็นเครื่องมือโอเพนซอร์สที่ช่วยทำให้ข้อมูลเชื่อมต่อ และสอดคล้องกันระหว่างแอพพลิเคชั่น API และฐานข้อมูล กับระบบปลายทางที่เก็บข้อมูลอื่นๆ อาทิ เช่น Data Warehouse หรือ Data Lake
Airflow
Airflow หรือ Apache Airflow คือโอเพนซอร์สแพลตฟอร์มประเภท task orchestrator ที่เราสามารถที่จะตรวจสอบ ทำตารางเวลา และเฝ้าสังเกต กระแสงาน หรือ Workflow ขั้นตอนการประมวลผลได้
การที่เราสามารถเขียนโค้ดเพื่อกำหนด Workflow ได้ จะทำให้เราดูแลรักษา Workflow ได้ง่ายขึ้น สามารถเก็บเป็นเวอร์ชั่น สามารถทดสอบ และสามารถทำให้การทำงานร่วมกันง่ายขึ้นได้
- Airflow 2.0 มีอะไรใหม่บ้าง มาดูกัน 🤩
- เขียน Document ใน Airflow โดยใช้ doc_md
- Setup Airflow on Kubernetes with remote logging to GCS
- [Airflow] ย้ายไฟล์จาก GCS ไป BigQuery ด้วย GoogleCloudStorageToBigQueryOperator กัน !
Amundsen
AWS S3
AWS S3 หรือ Amazon Simple Storage Service เป็นพื้นที่จัดเก็บไฟล์บนคลาวด์ของทาง Amazon Web Services (AWS) เหมาะกับการใช้งานที่หลากหลาย เช่น จัดเก็บข้อมูลดิบ เว็บไซต์ แอปพลิเคชันมือถือ การสำรองข้อมูลและการคืนค่า การเก็บข้อมูลแบบถาวร รวมทั้งการวิเคราะห์ Big Data
Azure Blob Storage
https://azure.microsoft.com/services/storage/blobs
Azure Blob Storage เป็นพื้นที่จัดเก็บไฟล์บนคลาวด์ของทาง Microsoft Azure ที่เหมาะสำหรับ Unstructured data โดยเฉพาะ
Dagster
Dagster คือ เครื่องมือโอเพนซอร์สสำหรับสร้าง data pipeline ด้วย Python ที่มีแนวคิดในการพัฒนาและดูแล data assets สามารถเขียน pipeline จากในโค้ดได้โดยตรง พร้อม web UI ที่ตรวจสอบติดตามการรันได้
Dash
Dash เป็น Open Source Framework ในการทำ Dashboard Visualization ในรูปแบบ Web App สร้าวขึ้นบน plotly.js
, React
และ Flask
ดังนั้น Dash จึงเหมาะสมสำหรับชาว Data ที่อาจจะไม่ได้เขียนเว็บมาก่อน ตัว Dash จึงเป็น python framework ที่คอยจัดการ Web App ให้ โดยสร้างขึ้นมาจากทีมงานเดียวกับ plotly
Dataprep
https://cloud.google.com/dataprep
Dataprep คือ serverless service สำหรับการจัดการ Data ของทาง Google Cloud โดยที่เราไม่จำเป็นต้องเขียน Code ซึ่งสามารถใช้งานผ่าน Web Browser ได้ รองรับการทำงานกับ Data หลากหลายแบบ เช่น Cleansing, Preparing Transform จนถึงการสร้าง Data Pipeline แบบครบวงจร
Data Studio
https://datastudio.google.com/
Data Studio คือเครื่องมือสำหรับสร้าง Dashboard ของทาง Google สามารถสร้างและใช้งานผ่าน Web Browser ได้ โดยสามารถแสดงข้อมูลในรูปแบบ Chart, Table, Maps และอื่น ๆ รวมถึงรองรับการเชื่อมต่อกับ service ภายนอกเช่น BigQuery, Dataprep, Google Analytics, Google Cloud Storage เป็นต้น
dbt
Debezium
Docker
Docker เป็นแพลตฟอร์มซอฟต์แวร์ที่แยกแอพพลิเคชั่นของคุณออกจากกัน โดยการเรียกใช้งานพวกมันในส่วนเฉพาะที่เรียกว่า Container โดย Docker Container จะมีส่วนที่คล้ายกันกับ Virtual Machine (VM) เพียงเล็กน้อย ตรงที่มันจะแยก Content ของมันออกจากซอฟต์แวร์อื่น ๆ ที่กำลังทำงานอยู่ในเครื่อง
Documentation: https://docs.docker.com/
Druid
Elasticsearch
Elasticsearch คือ โอเพนซอร์สสำหรับค้นหาข้อมูลต่างๆ(search engine database) และสามารถวิเคราะห์ข้อมูลแบบกระจายได้
Elastic Docs: https://www.elastic.co/guide/index.html
Fluentd
Open source data collector for unified logging layer
Flyte
Flyte คือ โอเพนซอร์สสำหรับสร้าง workflow เพื่อใช้งานบน container สามารถใช้งานร่วมกับ Kubernetes ได้ โดยสามารถสร้าง pipeline ด้วย Flyte SDK ที่รองรับทั้ง Python Java และ Scala
Google Cloud Storage
https://cloud.google.com/storage
Google Cloud Storage เป็นพื้นที่จัดเก็บไฟล์บนคลาวด์ของทาง Google Cloud ที่สามารถเลือกภูมิภาค (region) ในการจัดเก็บไฟล์ได้หลากหลาย ซี่งช่วยให้การรับส่งไฟล์มีความหน่วงน้อย (low latency)
Grafana
Grafana คือ เครื่องมือโอเพนซอร์ส สำหรับการแสดงผลข้อมูลที่เป็นอนุกรมเวลา และสร้าง dashboard ได้ นิยมใช้ในการแสดงผลกราฟเพื่อดูแลประสิทธิภาพของระบบ (performance monitoring) สามารถต่อเชื่อมกับฐานข้อมูลได้หลายประเภท
Great Expectations
Great Expectations เป็นเครื่องมือที่ช่วยให้เราดูแลรักษาคุณภาพของข้อมูล (data quality) ไว้ โดยผ่านฟังก์ชั่นการทำงานที่เข้าใจได้ง่าย อย่างเช่น expect_table_row_count_to_be_between
ที่เอาไว้ตรวจสอบจำนวนแถวของตารางว่าควรจะมีจำนวนแถวอยู่ระหว่างเท่าไหร่ถึงเท่าไหร่ เป็นต้น
Hadoop
Hadoop หรือ Apache Hadoop คือ โอเพนซอร์ส framework สำหรับการประมวลผลข้อมูลขนาดใหญ่ บนกลุ่มเครื่องคอมพิวเตอร์ (cluster) Hadoop ถูกสร้างขึ้นตั้งแต่ปี 2006 Hadoop มีองค์ประกอบหลายส่วน เช่น
- HDFS สำหรับจัดการการจัดเก็บข้อมูล
- YARN สำหรับจัดการทรัพยากรในการประมวลผล
- MapReduce วิธีการแบบดั้งเดิมในการประมวลผลข้อมูลขนาดใหญ่แบบคู่ขนาน (parallel)
- Hive สำหรับการจัดการ data warehouse บน Hadoop ด้วยภาษา SQL (HiveQL)
- Sparkสำหรับการประมวลผลข้อมูลขนาดใหญ่ ที่ได้รับความนิยมเป็นอย่างมาก
Kafka
Apache Kafka เป็นซอฟต์แวร์จัดการ event streaming (บางที่เรียกว่า data pipeline) เพื่อนำข้อมูลปริมาณมากๆ เข้าระบบอย่างรวดเร็ว
Kibana
https://www.elastic.co/kibana/
Kibana คือ เครื่องมือแสดงข้อมูลด้วยภาพและสำรวจข้อมูลที่ใช้สำหรับการวิเคราะห์บันทึกและอนุกรมเวลา เป็น web UI ที่เชื่อมต่อกับ Elasticsearch และ Logstash จึงเป็นเครื่องมือที่นิยมใช้ในการวิเคราะห์ Log สามารถสร้าง dashboard จากข้อมูลใน Elasticsearch ได้
Knime
Knime คือ เครื่องมือใช้สำหรับการทำ end-to-end data science มีลักษณะคล้ายคลึงกับ RapidMiner เช่น การเรียนรู้เครื่อง การเรียนรู้ลึก การทำเหมืองข้อมูล การวิเคราะห์การทำนาย (Predictive analysis) และการแปลผล นอกจากนั้นยังสามารถใช้ในการทำ Data mining (ขุดข้อมูล) และ Machine learning ซึ่งรวมไปถึงการโหลดและการแปลงข้อมูล (ETL) การประมวลผลล่วงหน้าและการวาดภาพจากข้อมูล การวิเคราะห์เชิงพยากรณ์และการสร้างแบบจำลองทางสถิติ การประเมินผลและการปรับใช้ ต่างๆ ทั้งยังมี Graphical User Interface (GUI) ที่เข้าใจง่ายผ่านการทำงานแบบ workflow diagram และสามารถเขียน code เพิ่มเติม ผ่านการทำงานแบบ customize workflow node ได้เช่นกัน
Kubernetes
Documentation: https://kubernetes.io/docs/home/
Kubernetes หรือที่เรียกว่า K8s เป็นแพลตฟอร์มแบบ Open-source สำหรับช่วยให้การปฏิบัติงานต่างๆ ที่เกี่ยวข้องกับ Linux Container สามารถทำได้โดยอัตโนมัติ ลดกระบวนการติดตั้งหรือขยายแอปพลิเคชันที่รันบน Container ที่นักพัฒนาต้องลงมือทำด้วยตนเองให้เหลือน้อยที่สุด
Logstash
https://www.elastic.co/logstash/
Logstash คือ โอเพนซอร์สสำหรับงานประมวลผลข้อมูลฝั่งเซิร์ฟเวอร์ ที่สามารถนำเข้าข้อมูลจากแหล่งต่าง ๆ พร้อมกับแปลงข้อมูลให้อยู่ในรูปแบบที่ต้องการได้ นิยมใช้ในการ process ข้อมูลประเภท Log
Luigi
https://luigi.readthedocs.io/en/stable/
Luigi คือ โอเพนซอร์สแพ็กเกจสำหรับสร้าง data pipeline แบบ batch ที่มีความซับซ้อน รองรับการรัน job ที่ใช้เวลาในการรันนาน และใช้ร่วมกับ Hadoop ได้ (เช่น Hive Spark) โดยใช้ภาษา Python Luigi ถูกสร้างขึ้นโดยบริษัท Spotify ตั้งแต่ปี 2012
Marquez
https://marquezproject.github.io/marquez/
MongoDB
MongoDB คือ โอเพนซอร์สสำหรับฐานข้อมูลเอกสาร (Document Database: ฐานข้อมูล NoSQL ชนิดหนึ่งซึ่งมีการเก็บข้อมูลในรูปแบบ JSON Object) ที่มีประสิทธิภาพสูง (High Performance) มีความพร้อมใช้งานสูง (High Availability) และมีการปรับขนาดอัตโนมัติ (Automatic Scaling)
Orchest
Orchest คือ open source สำหรับสร้าง data pipeline ด้วยวิธีง่ายๆ โดยตรงจากเบราว์เซอร์
Prefect
https://www.prefect.io/opensource/
Prefect คือ open source สำหรับสร้าง data pipeline ด้วย Python โดยสามารถเขียน workflow ได้โดยตรงจาก code พร้อม web UI เพื่อตรวจสอบติดตามการรันได้
Pulsar
Apache Pulsar คือ cloud-native, multi-tenant, high-performance solution สำหรับส่งข้อความแบบ server-to-server และการจัดคิวที่สร้างขึ้นบน publisher-subscribe (pub-sub) pattern โดย Pursar ผสมผสานคุณสมบัติที่ดีที่สุดของระบบการส่งข้อความแบบดั้งเดิม เช่น RabbitMQ เข้ากับระบบ pub-sub เช่น Apache Kafka ซึ่งเพิ่มหรือลดขนาดแบบไดนามิกโดยไม่ต้องหยุดทำงาน
RapidMiner
Redash
Redash เป็นเครื่องมือสำหรับการทำ dashboard/visualize data ใช้งานผ่าน browser สามารถจัดการ data source ผ่าน Query Editor รองรับ data source ทั้ง SQL และ NoSQL มีระบบ Alert และ Schedule refreshes คอยช่วย update data ให้เป็น up-to-date
Snowflake
Soda Core
Soda Core เป็นเครื่องมือ open source ที่ช่วยเรื่อง data reliability มีทั้งแบบ CLI และ Python library เราสามารถที่จะเอามาใช้ตรวจสอบคุณภาพของข้อมูลใน data pipeline หรือในระบบ data observability ของเราได้
จะมีเครื่องมืออีกตัวหนึ่งที่ชื่อว่า Soda Checks Language (SodaCL) ที่สร้างขึ้นมาบนตัว Soda Core อีกที โดยเราจะสามารถเขียนภาษาที่เป็น domain-specific language (DSL) ที่ถูกออกแบบมาเน้นให้ human-readable เพื่อที่ต้องการจะให้ใครก็ตามในองค์กรสามารถตรวจสอบคุณภาพของข้อมูลได้ด้วยตัวเอง
Spark
Spark หรือ Apache Spark เป็นเครื่องมือที่เราจะเอาไว้ประมวลผลข้อมูลขนาดใหญ่ หรือสร้างโมลเดล Machine Learning จากข้อมูลขนาดใหญ่ โดยที่เราสามารถนำเอาไปใช้กับ batch processing หรือ real-time processing ก็ได้
เครื่องมือตัวนี้แทบจะเป็นตัวเลือกในอันดับต้นๆ เลยก็ว่าได้ที่เอามาใช้ในการประมวลผลข้อมูลขนาดใหญ่ ตอนที่ประมวลผล Spark จะประมวลผลแบบ in-memory ทำให้การประมวลผลนั้นทำได้รวดเร็วมาก เมื่อเทียบกับ Hadoop MapReduce ที่ใช้การอ่านเขียนข้อมูลที่เป็นไฟล์จาก disk
Spark มี library ที่รองรับได้หลายภาษา เช่น Java, Scala, Python (PySpark), R (SparkR)
Streamlit
Open-source Python library เอาไว้สร้าง data app (หรือ web app) สำหรับโปรเจค data science กับ machine learning เราไม่จำเป็นต้องเขียน front-end เลย ลองเข้าไปดูตัวอย่างได้ที่ Gallery ได้
Superset
Apache Superset เป็นโปรแกรม Visualization Tools/Business Intelligence ที่มีข้อดีคือใหม่และมีความเป็น Developer-based สูงมาก เนื่องจากเป็นโปรแกรมที่ใช้เชื่อมกับ Service ของ Big Data ต่างๆ เช่น Cloud Database, Data Warehouse เป็นต้น