Data Expert 01 :

มักจะเกิดคำถามที่ว่า บริษัททั่วไปจะใช้ Data ทำอะไรได้บ้าง?? 

เริ่มต้น 
Problem Owner -- Data Consumer --- Data Platform (Data Infra เช่น พวก Data Center)  --- Data producer 

ตอนนี้ พนักงาน Data ทุกคน แทบจะใส่หมวกทุกตำแหน่งใน Data อยู่แล้ว ดังนั้น อย่ายึดติดกับหมวกให้มากนัก

เริ่มต้นภารกิจ Collect Data
ก่อนอื่นต้องเข้าใจว่า ปกติ มักได้รับ Quest มา 1 อัน แต่เรากลับต้องแก้ไขปัญหาในทุกๆ อันจนจบอยู่แล้ว

ยกตัวอย่างเช่น Quest ที่ 1 
Problem Owner แล้วก็มาตัดสินใจว่า Data ที่มีอยู่ทำอย่างไรกับมันดี 

มันจะเกิด Quest ที่ 2
Collect Data -- Data Injection  (Raw Data มักจะใช้ไม่ได้)
ยกตัวอย่าง
การที่เราไป Query ใน Production Database แล้วเกิดระบบล่ม มันคือความผิดเรา  เราจึงต้องไปสร้าง Data Storage ไว้ข้างนอกอีกทีหนึ่งก่อน  ถึงตอนนี้ เราต้องโยนข้อมูลลงไปใน Data Storage

เริ่มแนวคิดจาก Data Warehouse (เดิมจะ Transform แล้วโยนเข้าไปเลย แต่ข้อมูล Raw มันจะสูญหาย ซึ่งทำให้การวิเคราะห์มันสูญหายอีก)

ดังนั้น เราจึงเลือกถมข้อมูลดิบ  Raw Data ทั้งหมดลงไปใน Data Lake ก่อน  แล้วค่อย Transform ไปที่ Data WareHouse อีกที

ถึงตรงนี้ ระบบวิเคราะห์ ก็จะสามารถดึงข้อมูลได้ทั้งจาก Data Warehouse และ Data Lake

ดังนั้น ปัจจุบัน ก็เอามารวมกันเลยที่ Data LakeHouse อีกที 

การดึงข้อมูล
ถึงตอนนี้ มีข้อมูล มาแล้ว แต่ข้อมูลมันมีเยอะมากๆ  แต่เราต้อง Clean ข้อมูลก่อน

มันจะมี 2 อย่างคือ
Batch Compute ( Hive (Mapreduce) + Spark SQL เพื่อส่งเป็น Mapreduce) ดึงข้อมูลมาเยอะ ทำทีเดียว
Interactive Compute (Presto (SQL) +Druid (คำนวนแต่ต้องเตรียมข้อมูลบางส่วนก่อน) +StarRocks ตัวใหม่สุด)  ดึงข้อมูลมาน้อยๆ แล้ว ทำทีละน้อยๆ 

Apache Hadoop (Map Reduce Hive คือ SQL ใน Map Reduce ) 

DuckDB โปรแกรม ใน Laptop โยนข้อมูลเข้าไป (จะทำตัวเหมือน Druid )

แต่ SQL บน Hive หรือ DuckDB มันจะต้องเปลี่ยนนิดหน่อย ดังนั้นต้องจำ ว่า ใช้ Engine ไหนอยู่ 

ปัจจุบัน ผ่าน โปรแกรม SQLglot มันจะแปล SQL ไปเป็น MySQL . Hive DuckDB  Presto Spark  ได้เลย

Brute-Force 
มันต้องทำแบบออโต้ แต่มันต้องเรียงลำดับการทำงานให้ถูก 

DAG (Directed Acyclic Graph)

ต้องวาด  Flow ของข้อมูล ให้ได้ ก่อนจึงจะสามารถทำให้ Auto ได้ ตอนนี้จะใช้ Apache Airflow Dagster Azkaban(Linkedin) Luigi 

ถึงตรงนี้ ถ้าเราเอาบางส่วนมาแก้ไข  ระบบ Data ทั้งหมด ก็อาจล่มได้ ดังนั้นเราต้องสร้าง Test Environment ขึ้นมาอีก (จากระบบ DAG นี่แหละ)

การใช้ข้อมูล
Distribute Resources แยกเรือ่งที่สำคัญ กับ เรื่องที่ไม่สำคัญ

Cluster Management  Prioritize work and Separate Cluster  , Development Production by tasks

Create awareness ต้องโชว์คิวงาน เพราะ คนที่ส่งงานมา ไม่ได้งาน ก็จะส่งซ้ำๆ เข้าไปอีก ระบบล่มอีก

Incident Management  การสื่อสาร เช่น ถ้าระบบล่ม  เรากำลังซ่อมอะไรอยู่ รอกี่โมง

แยกเป็นกลุ่ม Leader  , Operation users , General user (Low Code) Advanced users (Code first) 
































ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

KoolMocyc : Forza 350 สเปกต่างๆ และการแก้ไข

Stable Diffusion 101 : Extension : AnimateDiff

KoolMocyc : Forza 350 : ปัญหาประจำตัว