by shigemk2

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

memo: 7 Key Recipes For Data Eng #ScalaMatsuri

memo: 7 Key Recipes For Data Eng #ScalaMatsuri

Organization

複雑な組織においてデータアクセスを活性化させる

  • buisiness
  • simple case
    • place
    • no idea
  • a lot of full
  • engineer
  • 複雑な組織 ビジョンを共有しない→フラストレーションがたまる
  • small team
  • hadoopクラスタは1つにする
  • ビジョンは文書化する

Optimizing our work

  • 業務の最適化
  • 業務最適化における意思決定で大切なこと
  • lead time/impact/failure management

  • lead time 企画から完成までの期間

  • impact 今の文脈を超えた良い効果
  • failure management 想定外の失敗は積みあがる

  • 先を見越して動くこと

  • ありうる可能性からリードタイムやコストを見積もる

  • コンポーネントで何が失敗しそうか考える
  • 頻度/予防策/失敗プランを考える

Staging

  • 動いているデータの凍結
  • Kafka/HDFSのおかげでビッグデータを長期間stagingできるようになった
  • statingは永続データ構造として見えるように
  • データはscalaのimmutableと同等に扱う
  • UUIDを使ったディレクトリに書き込む

Using RDDs or Dataframes

  • データ操作はなんだかんだでSQL
  • SQL/Meta vs Scala/Scala

http://dev.classmethod.jp/etc/apache-spark_rdd_investigation/

  • RDDはETLに向いている
  • データの制御 単体テストの書きやすさなど
  • dataframeはnotebookを使ったデータ検索やSQLと組み合わせた軽量なジョブ、動的なジョブに向いている

Cogroup all the things

  • Cogroupを使ってみる
  • データの連結につかえる

http://joshualande.com/cogroup-in-pig

  • 任意のキーにたいし単一の行を返す
  • gathering data
  • ディスク書き出しのあとにコードを置くことですばやくフィードバックできる
  • cogroupを使うと問題を最小化してかけるのでバグを再現しやすい

Inline data quality

  • データ品質を高めることでバッドデータへのレジリエンスが向上
  • データ品質はジョブの奥まで統合させる
  • 値をもつかEmptyの二択
  • アプリカティブを使って結果を組み合わせる
  • 注釈は蓄積
    • 次元ごとに集約される

ahoy-jon/autoBuild をチェック

Designing real programing

ステートレスな計算が基本