39 điểm bởi xguru 2024-11-25 | 1 bình luận | Chia sẻ qua WhatsApp
  • Việc tìm việc trong lĩnh vực data engineering có thể khiến nhiều người cảm thấy khó khăn do hệ sinh thái công nghệ phức tạp (ví dụ: Spark, Flink, Iceberg, BigQuery, v.v.)
  • Chỉ học Python và SQL thôi là chưa đủ; cần có chiến lược bài bản và thực hành thực tế

Những yếu tố cần có để tìm việc data engineering

  1. Năng lực kỹ thuật:

    • Thành thạo SQL và Python
    • Kỹ năng điện toán phân tán (ít nhất một trong Snowflake, Spark, BigQuery)
    • Hiểu về các công cụ orchestration (Airflow, Mage, Databricks Workflows, v.v.)
    • Khả năng data modeling và quản lý chất lượng dữ liệu
  2. Dự án portfolio:

    • Xây dựng các dự án có thể thể hiện công nghệ thực tế của bạn
  3. Xây dựng thương hiệu cá nhân:

    • Nhấn mạnh chuyên môn thông qua việc quản lý hồ sơ LinkedIn và chuẩn bị phỏng vấn

Học và thành thạo SQL

  • SQL là ngôn ngữ cốt lõi của data engineering:
    • Tài nguyên học tập được khuyến nghị:
    • Các khái niệm trọng tâm:
      • Các loại JOIN: INNER, LEFT, FULL OUTER (RIGHT JOIN hầu như không dùng)
      • Tổng hợp với GROUP BY và sử dụng DISTINCT
      • Hiểu window function và sự khác nhau giữa RANK, DENSE_RANK, ROW_NUMBER
      • Hiểu từ khóa và shuffle trong môi trường SQL phân tán (ví dụ: JOIN, GROUP BY, ORDER BY)
      • Cách sử dụng CTE(Common Table Expression), Temp Table, View

Học Python và Scala

  • Lựa chọn ngôn ngữ:
    • Người mới nên học Python, người đã có kinh nghiệm nên học Scala.
  • Các khái niệm quan trọng:
    • Cấu trúc dữ liệu: list, dictionary, stack, v.v.
    • Thuật toán: vòng lặp, tìm kiếm nhị phân, hiểu ký hiệu Big O
    • Các ứng dụng chính của Python:
      • Viết Airflow DAG
      • Tương tác với REST API
      • Viết Spark UDF và tối ưu hiệu năng

Các khái niệm về điện toán phân tán

  • Cốt lõi của điện toán phân tán:
    • Hiểu kiến trúc dựa trên Hadoop/Spark để phân tán khối lượng xử lý dữ liệu
    • Quản lý vấn đề shuffle và skew:
      • Sử dụng Broadcast JOIN, Bucket JOIN, partitioning
      • Dùng adaptive execution trong Spark 3+
  • Quản lý dữ liệu đầu ra:
    • Tối ưu kích thước file bằng cách tận dụng nén run length encoding của file Parquet

Đảm bảo chất lượng dữ liệu và khả năng sử dụng

  1. Chất lượng dữ liệu:

    • Loại bỏ dữ liệu trùng lặp, kiểm tra giá trị NULL, xác nhận định dạng và khối lượng dữ liệu phù hợp
    • Bổ sung kiểm chứng chất lượng vào data pipeline bằng các công cụ như Great Expectations
  2. Khả năng sử dụng:

    • Tài liệu hóa phù hợp và thống nhất đặc tả trước
    • Các cách data modeling:
      • Hiểu ưu và nhược điểm của relational, Dimensional(Kimball), One Big Table
  3. Tuân thủ dữ liệu cá nhân:

    • Ẩn danh thông tin nhận dạng cá nhân (PII) và giảm thiểu thời gian lưu trữ dữ liệu

Xây dựng dự án portfolio

  • Đặc điểm của một dự án hiệu quả:
    • Chọn chủ đề mà bản thân thực sự quan tâm
    • Xây dựng dự án có liên kết với frontend (ví dụ: Tableau, Power BI)
    • Áp dụng công nghệ mới nhất (Spark, Snowflake, Delta Lake, v.v.)
    • Triển khai pipeline chạy trong môi trường production

Xây dựng thương hiệu cá nhân và chuẩn bị phỏng vấn

  1. Tận dụng LinkedIn:

    • Xây dựng mạng lưới với hiring manager và đồng nghiệp
    • Chia sẻ hành trình học tập để nâng cao mức độ nhận diện
  2. Chuẩn bị phỏng vấn:

    • Tìm hiểu về người phỏng vấn và bối cảnh công ty
    • Trả lời câu hỏi một cách bình tĩnh và tích cực
    • Thể hiện sự tò mò và đam mê với công nghệ cũng như công việc

Kết luận

  • Việc tìm việc data engineering trong năm 2024 vẫn có thể tiếp cận được bằng một chiến lược bài bản ngay cả khi thị trường khó khăn
  • Nếu đi theo lộ trình trên, bạn sẽ tiến gần hơn tới công việc data engineering mà mình hướng tới

1 bình luận

 
joon14 2024-11-25

Scala thực sự là một ngôn ngữ rất tốt, nhưng thật tiếc khi có cảm giác rằng ngoài Spark ra thì nó dần mất đi chỗ đứng.