2024年 データエンジニアリング参入ロードマップ
(blog.dataengineer.io)- データエンジニアリング分野への就職は、複雑な技術エコシステム(例: Spark、Flink、Iceberg、BigQuery など)のため難しく感じられることがある
- 単に PythonとSQL を学ぶだけでは十分ではなく、体系的な戦略と実践が必要
データエンジニアリング就職に必要な要素
-
技術力:
- SQL および Python に習熟していること
- 分散コンピューティング技術(Snowflake、Spark、BigQuery のうち1つ以上)
- オーケストレーションツール(Airflow、Mage、Databricks Workflows など)の理解
- データモデリングおよびデータ品質管理の能力
-
ポートフォリオプロジェクト:
- 実際の技術力を示せるプロジェクトを作ること
-
個人ブランディング:
- LinkedIn プロフィールの管理や面接準備を通じて専門性を強調
SQLの学習と習熟
- SQLはデータエンジニアリングの必須言語:
- 推奨学習リソース:
- 重要な概念:
- JOIN の種類: INNER、LEFT、FULL OUTER(RIGHT JOIN はほとんど使わない)
- GROUP BY による集計と DISTINCT の活用
- ウィンドウ関数と RANK、DENSE_RANK、ROW_NUMBER の違いを理解する
- SQL の分散環境におけるキーワードとシャッフル(例: JOIN、GROUP BY、ORDER BY)を理解する
- CTE(Common Table Expression)、Temp Table、View の活用
PythonおよびScalaの学習
- 言語の選択:
- 初心者には Python、経験者には Scala を推奨。
- 重要な概念:
- データ構造: リスト、ディクショナリ、スタックなど
- アルゴリズム: ループ、二分探索、Big O 記法の理解
- Python の主な用途:
- Airflow DAG の作成
- REST API とのやり取り
- Spark UDF の作成とパフォーマンス最適化
分散コンピューティングの概念
- 分散コンピューティングの核心:
- データ処理量を分散させる Hadoop/Spark ベースのアーキテクチャを理解する
- シャッフルとスキュー(skew)問題の管理:
- Broadcast JOIN、Bucket JOIN、パーティショニングの活用
- Spark 3+ における適応的実行の利用
- 出力データ管理:
- Parquet ファイルのランレングス圧縮(run length encoding)を活用してファイルサイズを最適化
データ品質と可用性の確保
-
データ品質:
- 重複除去、NULL 値の点検、適切な形式およびデータ量の確認
- データパイプラインに Great Expectations のようなツールで品質検証を追加
-
使いやすさ:
- 適切なドキュメント化と事前の仕様合意
- データモデリング方式:
- リレーショナル、Dimensional(Kimball)、One Big Table それぞれの長所と短所を理解
-
個人情報コンプライアンス:
- 個人識別情報(PII)の匿名化とデータ保存期間の最小化
ポートフォリオプロジェクトの作成
- 効果的なプロジェクトの特徴:
- 個人的に関心のあるテーマを選ぶ
- フロントエンドと連携したプロジェクトを作る(例: Tableau、Power BI)
- 最新技術(Spark、Snowflake、Delta Lake など)を適用
- 本番環境で動作するパイプラインを実装
個人ブランディングと面接準備
-
LinkedInの活用:
- 採用担当者や同僚とのネットワークを構築
- 学習の過程を共有しながら認知を高める
-
面接準備:
- 面接官と企業の背景を調査
- 質問に落ち着いて前向きに対応
- 技術や職務に対する好奇心と情熱を伝える
結論
- 2024年のデータエンジニアリング就職は、厳しい市場環境の中でも体系的な戦略によって十分にアプローチ可能
- 上記のロードマップに沿って進めば、目指すデータエンジニアリングの仕事により近づけるだろう
1件のコメント
Scala は本当に良い言語なのに、だんだん Spark 以外では使い道を失っていくようで残念です