สวัสดีอีกครั้ง! ชื่อของบทความพูดเพื่อตัวเอง ในความคาดหมายของการเริ่มหลักสูตร
คำแนะนำง่ายๆ เกี่ยวกับวิธีการจับคลื่น Data Engineering และไม่ปล่อยให้มันลากคุณลงสู่เหว
ดูเหมือนใครๆ ก็อยากเป็น Data Scientist ในยุคนี้ แต่แล้ววิศวกรรมข้อมูลล่ะ? โดยพื้นฐานแล้ว นี่เป็นลูกผสมระหว่างนักวิเคราะห์ข้อมูลและนักวิทยาศาสตร์ข้อมูล โดยทั่วไปวิศวกรข้อมูลจะรับผิดชอบในการจัดการเวิร์กโฟลว์ การประมวลผลไปป์ไลน์ และกระบวนการ ETL. เนื่องจากความสำคัญของฟังก์ชันเหล่านี้ ปัจจุบันนี้จึงเป็นอีกหนึ่งศัพท์แสงระดับมืออาชีพยอดนิยมที่กำลังได้รับแรงผลักดันอย่างแข็งขัน
เงินเดือนที่สูงและความต้องการที่สูงเป็นเพียงส่วนเล็กๆ ที่ทำให้งานนี้น่าสนใจอย่างยิ่ง! หากคุณต้องการเข้าร่วมอันดับฮีโร่ มันไม่สายเกินไปที่จะเริ่มเรียนรู้ ในโพสต์นี้ ฉันได้รวบรวมข้อมูลที่จำเป็นทั้งหมดเพื่อช่วยให้คุณดำเนินการขั้นแรกได้
วิศวกรรมข้อมูลคืออะไร?
จริงๆ แล้ว ไม่มีคำอธิบายใดที่ดีไปกว่านี้อีกแล้ว:
“นักวิทยาศาสตร์สามารถค้นพบดาวดวงใหม่ได้ แต่เขาไม่สามารถสร้างมันขึ้นมาได้ เขาจะต้องขอให้วิศวกรทำแทนเขา”
–กอร์ดอน ลินด์ซีย์ เกล็กก์
ดังนั้นบทบาทของวิศวกรข้อมูลจึงค่อนข้างสำคัญ
ตามชื่อที่แสดง วิศวกรรมข้อมูลเกี่ยวข้องกับข้อมูล ได้แก่ การส่งมอบ การจัดเก็บ และการประมวลผล ดังนั้น หน้าที่หลักของวิศวกรคือการจัดหาโครงสร้างพื้นฐานที่เชื่อถือได้สำหรับข้อมูล หากเราดูลำดับชั้นความต้องการของ AI วิศวกรรมข้อมูลจะครอบคลุม 2–3 ระยะแรก: การรวบรวม การเคลื่อนย้ายและการเก็บรักษา การเตรียมข้อมูล.
วิศวกรข้อมูลทำอะไร?
ด้วยการถือกำเนิดของข้อมูลขนาดใหญ่ ขอบเขตความรับผิดชอบได้เปลี่ยนแปลงไปอย่างมาก หากก่อนหน้านี้ผู้เชี่ยวชาญเหล่านี้เขียนคำสั่ง SQL ขนาดใหญ่และข้อมูลกลั่นโดยใช้เครื่องมือ เช่น Informatica ETL, Pentaho ETL, Talend ในปัจจุบัน ข้อกำหนดสำหรับวิศวกรข้อมูลก็เพิ่มขึ้น
บริษัทส่วนใหญ่ที่เปิดรับตำแหน่ง Data Engineer มีข้อกำหนดดังต่อไปนี้:
- ความรู้ที่ยอดเยี่ยมเกี่ยวกับ SQL และ Python
- มีประสบการณ์กับแพลตฟอร์มคลาวด์ โดยเฉพาะ Amazon Web Services
- หากมีความรู้เกี่ยวกับ Java/Scala จะพิจารณาเป็นพิเศษ
- มีความเข้าใจฐานข้อมูล SQL และ NoSQL เป็นอย่างดี (การสร้างแบบจำลองข้อมูล คลังข้อมูล)
โปรดทราบว่านี่เป็นเพียงสิ่งจำเป็นเท่านั้น จากรายการนี้ สามารถสันนิษฐานได้ว่าวิศวกรข้อมูลเป็นผู้เชี่ยวชาญในด้านการพัฒนาซอฟต์แวร์และแบ็กเอนด์
ตัวอย่างเช่น หากบริษัทเริ่มสร้างข้อมูลจำนวนมากจากแหล่งต่างๆ งานของคุณในฐานะวิศวกรข้อมูลคือการจัดระเบียบการรวบรวมข้อมูล การประมวลผล และการจัดเก็บข้อมูล
รายการเครื่องมือที่ใช้ในกรณีนี้อาจแตกต่างกันไป ขึ้นอยู่กับปริมาณของข้อมูล ความเร็วการรับ และความแตกต่าง บริษัทส่วนใหญ่ไม่ได้จัดการกับข้อมูลขนาดใหญ่เลย ดังนั้นในฐานะที่เก็บข้อมูลส่วนกลางหรือที่เรียกว่าคลังข้อมูล คุณสามารถใช้ฐานข้อมูล SQL (PostgreSQL, MySQL ฯลฯ) กับชุดสคริปต์ขนาดเล็กที่ป้อนข้อมูลลงใน คลังสินค้า
ยักษ์ใหญ่ด้านไอที เช่น Google, Amazon, Facebook หรือ Dropbox มีข้อกำหนดที่สูงกว่า: ความรู้เกี่ยวกับ Python, Java หรือ Scala
- ประสบการณ์กับข้อมูลขนาดใหญ่: Hadoop, Spark, Kafka
- ความรู้เกี่ยวกับอัลกอริทึมและโครงสร้างข้อมูล
- ทำความเข้าใจพื้นฐานของระบบแบบกระจาย
- หากมีประสบการณ์กับเครื่องมือแสดงภาพข้อมูล เช่น Tableau หรือ ElasticSearch จะพิจารณาเป็นพิเศษ
นั่นคือมีการเปลี่ยนแปลงที่ชัดเจนเกี่ยวกับข้อมูลขนาดใหญ่ กล่าวคือในการประมวลผลภายใต้ภาระงานสูง บริษัทเหล่านี้ได้เพิ่มข้อกำหนดสำหรับความทนทานต่อข้อผิดพลาดของระบบ
วิศวกรข้อมูลกับ นักวิทยาศาสตร์ข้อมูล
โอเค นั่นเป็นการเปรียบเทียบที่เรียบง่ายและตลก (ไม่มีอะไรเป็นส่วนตัว) แต่ในความเป็นจริงแล้ว มันซับซ้อนกว่ามาก
อันดับแรก คุณควรรู้ว่ามีความคลุมเครืออย่างมากในการกำหนดบทบาทและทักษะของนักวิทยาศาสตร์ข้อมูลและวิศวกรข้อมูล นั่นคือคุณอาจสับสนได้ง่ายว่าทักษะใดที่จำเป็นในการเป็นวิศวกรข้อมูลที่ประสบความสำเร็จ แน่นอนว่ามีทักษะบางอย่างที่ทับซ้อนกับทั้งสองบทบาท แต่ก็มีทักษะที่ขัดแย้งกันหลายประการเช่นกัน
วิทยาการข้อมูลถือเป็นธุรกิจที่จริงจัง แต่เรากำลังก้าวไปสู่โลกแห่งวิทยาการข้อมูลเชิงฟังก์ชันซึ่งผู้ปฏิบัติงานสามารถทำการวิเคราะห์ของตนเองได้ หากต้องการเปิดใช้งานไปป์ไลน์ข้อมูลและโครงสร้างข้อมูลแบบผสานรวม คุณต้องมีวิศวกรข้อมูล ไม่ใช่นักวิทยาศาสตร์ข้อมูล
วิศวกรข้อมูลเป็นที่ต้องการมากกว่านักวิทยาศาสตร์ข้อมูลหรือไม่?
- ใช่ เพราะก่อนที่คุณจะสามารถทำเค้กแครอทได้ คุณต้องรวบรวม ปอกเปลือก และสต๊อกแครอทก่อน!
วิศวกรข้อมูลเข้าใจการเขียนโปรแกรมได้ดีกว่านักวิทยาศาสตร์ด้านข้อมูลใดๆ แต่เมื่อพูดถึงเรื่องสถิติ กลับตรงกันข้าม
แต่นี่คือข้อดีของวิศวกรข้อมูล:
หากไม่มีเขา/เธอ มูลค่าของโมเดลต้นแบบซึ่งส่วนใหญ่มักประกอบด้วยโค้ดคุณภาพแย่มากในไฟล์ Python ที่ได้รับจากนักวิทยาศาสตร์ข้อมูลและทำให้เกิดผลลัพธ์นั้นมีแนวโน้มเป็นศูนย์
หากไม่มีวิศวกรข้อมูล โค้ดนี้จะไม่มีวันกลายมาเป็นโครงการ และปัญหาทางธุรกิจจะไม่ได้รับการแก้ไขอย่างมีประสิทธิภาพ วิศวกรข้อมูลกำลังพยายามเปลี่ยนทั้งหมดนี้ให้เป็นผลิตภัณฑ์
ข้อมูลพื้นฐานที่วิศวกรข้อมูลควรรู้
ดังนั้น หากงานนี้นำแสงสว่างในตัวคุณออกมาและคุณมีความกระตือรือร้น คุณสามารถเรียนรู้ได้ คุณจะสามารถเชี่ยวชาญทักษะที่จำเป็นทั้งหมดและกลายเป็นร็อคสตาร์ตัวจริงในสาขาวิศวกรรมข้อมูล และใช่ คุณสามารถดึงสิ่งนี้ออกมาได้แม้จะไม่มีทักษะการเขียนโปรแกรมหรือความรู้ด้านเทคนิคอื่นๆ ก็ตาม มันยากแต่เป็นไปได้!
ขั้นตอนแรกคืออะไร?
คุณควรจะมีแนวคิดทั่วไปว่าอะไรคืออะไร
ประการแรก Data Engineering หมายถึงวิทยาการคอมพิวเตอร์ โดยเฉพาะอย่างยิ่ง คุณต้องเข้าใจอัลกอริทึมและโครงสร้างข้อมูลที่มีประสิทธิภาพ ประการที่สอง เนื่องจากวิศวกรข้อมูลทำงานกับข้อมูล จึงจำเป็นต้องเข้าใจหลักการของฐานข้อมูลและโครงสร้างที่รองรับข้อมูลเหล่านั้น
ตัวอย่างเช่น ฐานข้อมูล B-tree SQL ทั่วไปจะขึ้นอยู่กับโครงสร้างข้อมูล B-Tree เช่นเดียวกับในคลังข้อมูลแบบกระจายสมัยใหม่ LSM-Tree และการปรับเปลี่ยนตารางแฮชอื่นๆ
*ขั้นตอนเหล่านี้อ้างอิงจากบทความดีๆ
1. อัลกอริทึมและโครงสร้างข้อมูล
การใช้โครงสร้างข้อมูลที่ถูกต้องสามารถปรับปรุงประสิทธิภาพของอัลกอริทึมได้อย่างมาก ตามหลักการแล้ว เราทุกคนควรเรียนรู้เกี่ยวกับโครงสร้างข้อมูลและอัลกอริทึมในโรงเรียนของเรา แต่ก็ไม่ค่อยมีใครครอบคลุมเรื่องนี้ ไม่ว่าในกรณีใด ก็ไม่สายเกินไปที่จะทำความรู้จัก
ต่อไปนี้เป็นหลักสูตรฟรีที่ฉันชื่นชอบสำหรับการเรียนรู้โครงสร้างข้อมูลและอัลกอริธึม:
จากง่ายไปซับซ้อน: โครงสร้างข้อมูล (Udemy) อัลกอริทึม ส่วนที่ XNUMX (หลักสูตร) อัลกอริทึม ตอนที่ XNUMX (หลักสูตร)
นอกจากนี้อย่าลืมเกี่ยวกับงานอัลกอริธึมคลาสสิกของ Thomas Corman -
- เพื่อพัฒนาทักษะของคุณให้ใช้
ลีทโค้ด .
คุณยังสามารถดำดิ่งสู่โลกของฐานข้อมูลด้วยวิดีโอที่น่าทึ่งจาก Carnegie Mellon University บน Youtube:
2. เรียนรู้ SQL
ชีวิตทั้งชีวิตของเราคือข้อมูล และเพื่อที่จะดึงข้อมูลนี้ออกจากฐานข้อมูล คุณจะต้อง "พูด" ภาษาเดียวกันกับฐานข้อมูลนั้น
SQL (Structured Query Language) คือภาษาของการสื่อสารในโดเมนข้อมูล ไม่ว่าใครจะพูดอะไร SQL ก็มีชีวิตอยู่ มีชีวิตอยู่ และจะคงอยู่ไปอีกนานแสนนาน
หากคุณอยู่ในการพัฒนามาเป็นเวลานาน คุณอาจสังเกตเห็นว่ามีข่าวลือเกี่ยวกับการตายของ SQL ที่ใกล้จะเกิดขึ้นเป็นระยะๆ ภาษาได้รับการพัฒนาในช่วงต้นทศวรรษที่ 70 และยังคงได้รับความนิยมอย่างมากในหมู่นักวิเคราะห์ นักพัฒนา และผู้ที่ชื่นชอบ
หากไม่มีความรู้เกี่ยวกับ SQL ก็ไม่ต้องทำอะไรเลยในด้านวิศวกรรมข้อมูล เนื่องจากคุณจะต้องสร้างแบบสอบถามเพื่อดึงข้อมูลอย่างหลีกเลี่ยงไม่ได้ คลังข้อมูลขนาดใหญ่ที่ทันสมัยทั้งหมดรองรับ SQL:
- อเมซอน Redshift
- เอชพี เวอร์ติก้า
- คำพยากรณ์
- SQL Server
... และอื่น ๆ อีกมากมาย.
ในการวิเคราะห์ชั้นข้อมูลขนาดใหญ่ที่จัดเก็บไว้ในระบบแบบกระจายเช่น HDFS เอ็นจิ้น SQL ได้ถูกประดิษฐ์ขึ้น: Apache Hive, Impala ฯลฯ ดูสิว่ามันจะไม่ไปไหน
วิธีการเรียนรู้ SQL? เพียงแค่ทำมันในทางปฏิบัติ
ในการทำเช่นนี้ ฉันขอแนะนำให้ดูบทช่วยสอนที่ยอดเยี่ยมซึ่งฟรีจาก
สิ่งที่ทำให้หลักสูตรเหล่านี้พิเศษคือมีสภาพแวดล้อมแบบโต้ตอบที่คุณสามารถเขียนและเรียกใช้คำสั่ง SQL ได้ในเบราว์เซอร์ของคุณ ทรัพยากร
3. การเขียนโปรแกรมใน Python และ Java/Scala
ทำไมคุณควรเรียนรู้ภาษาการเขียนโปรแกรม Python ฉันได้เขียนไปแล้วในบทความ
- อาปาเช่ คาฟคา (สกาล่า)
- Hadoop, HDFS (จาวา)
- Apache Spark (สกาล่า)
- อาปาเช่ คาสซานดรา (จาวา)
- HBase (จาวา)
- อาปาเช่ไฮฟ์ (จาวา)
เพื่อให้เข้าใจถึงวิธีการทำงานของเครื่องมือเหล่านี้ คุณจำเป็นต้องรู้ภาษาที่ใช้เขียน แนวทางการทำงานของ Scala ช่วยให้คุณสามารถแก้ไขปัญหาการประมวลผลข้อมูลแบบขนานได้อย่างมีประสิทธิภาพ น่าเสียดายที่ Python ไม่สามารถอวดความเร็วและการประมวลผลแบบขนานได้ โดยทั่วไปความรู้หลายภาษาและกระบวนทัศน์การเขียนโปรแกรมเป็นสิ่งที่ดีสำหรับแนวทางการแก้ปัญหาที่หลากหลาย
หากต้องการดำดิ่งสู่ภาษาสกาล่า คุณสามารถอ่านได้
สำหรับ Python ฉันเชื่อ
4. เครื่องมือสำหรับการทำงานกับข้อมูลขนาดใหญ่
นี่คือรายการเครื่องมือที่ได้รับความนิยมมากที่สุดในโลกของข้อมูลขนาดใหญ่:
- Apache Spark
- Apache Kafka
- Apache Hadoop (HDFS, HBase, ไฮฟ์)
- อาปาเช่ คาสซานดรา
คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับการสร้างบล็อคข้อมูลขนาดใหญ่ได้ในสิ่งที่น่าทึ่งนี้
- การแนะนำ Hadoop สามารถทำได้
คู่มือฉบับสมบูรณ์เพื่อการเรียนรู้ Hadoop (ฟรี) . - คำแนะนำที่ครอบคลุมที่สุดสำหรับ Apache Spark สำหรับฉันคือ -
Spark: คู่มือฉบับสมบูรณ์ .
5. แพลตฟอร์มคลาวด์
ความรู้เกี่ยวกับแพลตฟอร์มคลาวด์อย่างน้อยหนึ่งแพลตฟอร์มอยู่ในรายการข้อกำหนดพื้นฐานสำหรับผู้สมัครตำแหน่งวิศวกรข้อมูล นายจ้างชอบ Amazon Web Services โดยแพลตฟอร์มคลาวด์ของ Google อยู่ในอันดับที่สอง และ Microsoft Azure อยู่ในสามอันดับแรก
คุณต้องมีความรู้ที่ดีเกี่ยวกับ Amazon EC2, AWS Lambda, Amazon S3, DynamoDB
6. ระบบแบบกระจาย
การทำงานกับข้อมูลขนาดใหญ่หมายถึงการมีอยู่ของกลุ่มคอมพิวเตอร์ที่ทำงานอย่างอิสระ การสื่อสารระหว่างกันจะดำเนินการผ่านเครือข่าย ยิ่งคลัสเตอร์มีขนาดใหญ่เท่าใด ความน่าจะเป็นของความล้มเหลวของโหนดสมาชิกก็จะยิ่งมากขึ้นเท่านั้น ในการเป็นนักวิทยาศาสตร์ด้านข้อมูลที่ยอดเยี่ยม คุณต้องเข้าใจปัญหาและแนวทางแก้ไขที่มีอยู่สำหรับระบบแบบกระจาย บริเวณนี้มีความเก่าแก่และซับซ้อน
Andrew Tanenbaum ถือเป็นผู้บุกเบิกในสาขานี้ สำหรับผู้ที่ไม่กลัวทฤษฎี ผมขอแนะนำหนังสือของเขาครับ
ฉันคิดว่า
สำหรับคนชอบดูวีดีโอก็มีคอร์สใน Youtube ครับ
7. ไปป์ไลน์ข้อมูล
ไปป์ไลน์ข้อมูลคือสิ่งที่คุณขาดไม่ได้ในฐานะวิศวกรข้อมูล
โดยส่วนใหญ่แล้ว วิศวกรข้อมูลจะสร้างสิ่งที่เรียกว่าไปป์ไลน์ข้อมูล นั่นคือ เขาสร้างกระบวนการในการส่งข้อมูลจากที่หนึ่งไปยังอีกที่หนึ่ง สิ่งเหล่านี้อาจเป็นสคริปต์แบบกำหนดเองที่ไปที่ API ของบริการภายนอกหรือสร้างการสืบค้น SQL เพิ่มข้อมูล และใส่ลงในที่เก็บข้อมูลส่วนกลาง (คลังข้อมูล) หรือที่เก็บข้อมูลที่ไม่มีโครงสร้าง (ที่จัดเก็บข้อมูลดิบ)
โดยสรุป: รายการตรวจสอบพื้นฐานสำหรับวิศวกรข้อมูล
โดยสรุป จำเป็นต้องมีความเข้าใจที่ดีในเรื่องต่อไปนี้:
- ระบบข้อมูล;
- การพัฒนาซอฟต์แวร์ (Agile, DevOps, เทคนิคการออกแบบ, SOA);
- ระบบแบบกระจายและการโปรแกรมแบบขนาน
- ความรู้พื้นฐานด้านฐานข้อมูล - การวางแผน การออกแบบ การดำเนินการ และการแก้ไขปัญหา
- การออกแบบการทดลอง - การทดสอบ A/B เพื่อพิสูจน์แนวคิด กำหนดความน่าเชื่อถือ ประสิทธิภาพของระบบ และพัฒนาเส้นทางที่เชื่อถือได้เพื่อส่งมอบโซลูชันที่ดีอย่างรวดเร็ว
นี่เป็นเพียงข้อกำหนดบางประการในการเป็นวิศวกรข้อมูล ดังนั้นเรียนรู้และทำความเข้าใจระบบข้อมูล ระบบสารสนเทศ การส่งมอบ/ปรับใช้/บูรณาการอย่างต่อเนื่อง ภาษาการเขียนโปรแกรม และหัวข้อวิทยาการคอมพิวเตอร์อื่นๆ (ไม่ใช่ทุกสาขาวิชา)
และสุดท้ายสิ่งสุดท้ายแต่สำคัญมากที่ฉันอยากจะพูด
เส้นทางสู่การเป็น Data Engineering นั้นไม่ง่ายอย่างที่คิด เขาไม่ให้อภัย เขาหงุดหงิด และคุณต้องเตรียมพร้อมสำหรับสิ่งนี้ บางช่วงเวลาของการเดินทางนี้อาจทำให้คุณยอมแพ้ แต่นี่คืองานจริงและกระบวนการเรียนรู้
อย่าเพิ่งเคลือบมันตั้งแต่เริ่มต้น จุดมุ่งหมายทั้งหมดของการเดินทางคือการเรียนรู้ให้มากที่สุดและเตรียมพร้อมสำหรับความท้าทายใหม่ๆ
นี่เป็นภาพที่ดีที่ฉันเจอซึ่งแสดงให้เห็นประเด็นนี้ได้ดี:
และใช่ อย่าลืมหลีกเลี่ยงความเหนื่อยหน่ายและพักผ่อน นี่เป็นสิ่งสำคัญมากเช่นกัน ขอให้โชคดี!
คุณคิดอย่างไรกับบทความนี้เพื่อน ๆ ? เราขอเชิญคุณไป
ที่มา: will.com