by shigemk2

当面は技術的なことしか書かない

メモ 動画系メディア会社で行われているETLの実際 #shinjukugl

メモ 動画系メディア会社で行われているETLの実際 #shinjukugl

  • デリッシュキッチンのアレ

PoC

  • SSOTに則ったアーキにしたかった
  • API(Golang) Adjust Firebase DWH[Athena BQ] 可視化
    • AdjustのデータとかAPIのデータとかが結合化出来ない(SSOTじゃない)
    • Athena スキャン従量課金
  • SSOTが実現されていること
    • 簡素な分析SQL
    • window関数やJOINの除去
    • スキャンを気にしない
    • スキーマレスであること
  • 白羽の矢: TreasureData
    • リソース課金
    • ポストバックが出来るAPIが用意されていること
    • スキーマレスDB
    • フルマネージドなbulk import/job scheduler

ETL 事例紹介

  • https://en.wikipedia.org/wiki/Extract,transform,load
    • Firebase Analytics
      • BaaSツール
      • A/Bテストとかプッシュ通知とかイベントログ計測とか
      • BQにイベント計測ログが連携可能
      • BQを使っているのでスキャン量とSQLの難読化が問題であった
  • FireBase→BQ→GCS→(embulk)→S3→(embulk)→TD
  • TreasureWorkflow
  • Embulk on EMR
    • MapReduce Executorを利用してHadoopクラスター上で分散実行
    • 2ステップ
      • log用のjarを事前ロード
      • MapReduce Executorを利用してEmbulkを起動する
      • 大量取り込みができる
  • Embulk 実行計画 1レコード1イベントで列指向変換
    1. AVRO→JSON
    2. JSON→PlazmaDB

Embulkプラグインの組み合わせ

  • Embulkプラグインがないので仕方なく作って組み合わせる
    • Java8との格闘
    • 差分連携 − Firebase→BQ
    • intraday 今日のデータ
    • 差分連携を利用して過去ログ積み上げ
  • 全量は昨日までのデータ + 今日のデータ
    • 今日のデータ = 全量 - 昨日までのデータ
    • RedShiftでも出来るけどEmbulkで実現したい
  • parser-firebase_avro
    • akka + redis
  • 多種多様なETLをEmbulkプラグインで
  • なかったら作る
    • Scala勉強しておくとEmbulkプラグインの作成に役立つ