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
ステートレスな計算が基本