nokoのブログ

こちらは暫定のメモ置き場ですので悪しからず

データエンジニアリングを復習してみた

概要

スクリーンショット 2021-03-14 11.56.15.png

選定ポイント

  • MPPデータベースは、最初にETLプロセスなどでデータを取り込むための手順が必要
    • 元のデータがCSVJSONで、複雑な加工処理が不要なら、オブジェクトストレージからデータウェアハウスに直接転送してSQLで加工、でも良い
    • BIツールとMPPデータの組み合わせは実績があるので、可視化のためのデータマートとして使える
  • Hiveは大規模なバッチ処理を着実に実行することに長けたクエリエンジン
  • PrestoはHiveとは逆で、速い分、エラーが起きると最初からやり直す
    • データの構造化は、HiveやSpark
  • 1レコード500バイトと仮定すると、1千万レコードで5GBで、それくらいならRDBをデータマートにするのが良い

補足

  • ポイントは
    • データ保存量の拡張手段(制約がないか)
    • データの取り出し手段
  • 分散ストレージとしてNoSQLを使うときもある
  • オブジェクトストレージに格納するデータは、1MB~1GBくらいが良い
  • データフローは、分散ストレージに格納した後から
    • オブジェクトストレージなどからデータ読み込んで、構造化されたテーブルを作成する
    • ETLプロセスの一種
  • Glue
    • 「S3のデータファイルから、AWS Redshift Spectrum と AWS Athenaのテーブルを作成する」ツール
      • 実質、AWS GlueはAWS EMRで作られていて、テーブル定義はAWS EMRのHive Tableでも作ることができます。
    • Glueでデータカタログと呼んでいるテーブル定義は、Apache Hive のTableのことで、 Glueは、S3のファイルから、Hive Tableを作るツール
    • Glueはクローリングによるテーブル定義作成・更新に加えて、Apache Sparkを使って、プログラミングにより、ユーザーがより細かくデータ加工することもできます。
    • AWS GlueのジョブにはSparkとPython Shellの2つのジョブタイプがあります。
      • Sparkジョブではutf-8形式のデータのみにしか対応していない
  • Athena
    • Athena は初期状態で AWS Glueデータカタログと統合されており、さまざまなサービスにわたるメタデータの統合リポジトリを作成できます。データソースのクロールとスキーマの解析、新規および修正したテーブル定義とパーティション定義のカタログへの入力、スキーマのバージョニング保持が可能です。
  • データマートは集約と可視化の間に挟む
  • Hive metastoreは内部でPostgresを使ったりする

参考