Editor's Notes
- こんにちは、楽天の半谷と申します。
ちょっと今日は悩みを聞いていただこうと思って来ました。
- 自己紹介はこんな感じです。
Scrumに興味がありまして、仙台ですくすくスクラムという勉強会を運営しています。
最近はデザイン思考とか、どうやってプロダクトを生み出すかとか、主に上流に興味があります。
- 私がやってる仕事
・楽天市場のデータウェアハウスと、それにまつわるいろんなものを開発したり運用したりしてます。
・社内共有の2PBのHadoopクラスタがありまして、そこに毎日、受注情報やら商品の更新情報やら店舗情報やら、
数十GBのデータをぶち込んで、レポーティングしたり分析したり悪い店舗さんや利用者を監視したり、いろんな事に使っています。
・あんまり言えませんが、バールのようなものを購入した人探して~って警察から依頼受けて探せたりとか、
・最近だとおかしな価格で売ってる商品は売れなくしちゃったりとか、そういう事をやっています。
・ちなみに今はセールの準備中でおおわらわですw
成果物はSQLとデータ、というのが一番多いです
- ・Hadoopはデータを分散処理するのにMap/Reduceっていうアルゴリズムを使ってます
・平たく言うと人海戦術です
・Javaで書けるけどJoinとか難しいのでFacebookがHiveっていうSQLで書けるのを作った
・古いデータベースをこれを使って2011年にリプレースした
- ・HiveはHadoopのHDFSというファイルシステムをSQLで分析するようにしたもの。
・HDFSはランダムなInsertやUpdateに向かない。やりたいならHBaseとか使うしか無いが、これもこれでハードル高い
・なのでHiveにもInsert intoとかUpdateとか無い。データを作るのが大変。
- ・あんまり開発環境が充実してない
・規模が全然違う。テスト環境は数TBくらいしか無い
・本番には予測不可能なデータがいっぱい。店舗さんとか利用者が入力した情報がそのまま入ってるから。
- たとえばこんな、ちゃんと割引してるよねってのを調べるSQLがあったとします
- こんなので出力結果が数百万件とかなると、Limitつけて100件だけ出すといっても実行に5分くらいはかかっちゃいます
これでも5分で帰ってくるのがHadoopのすごいとこではありますが。
- 確認というと現状は、出てきたリストをサンプリングして、
・元のテーブルをSelectして見て期待値通りか とか
・商品のページを実際に見てみてつじつま合ってるねって見る とか
かなり泥くさい事をやってなんとかしてます
- 理想としてはセール中は買物しまくりたいんですよ、ポイントいっぱい入るし安いもの出てるし
皆さん是非御利用くださいね
- が、実際は、自動化出来てない部分が多いので、出したデータに不具合やら想定外やらあったり、
ロジックの確認とかそういうのが来まくってあんまり買物できません・・・
- てことで結構悩んでます
・SQLのテストをいかに自動化するか
・手と目でやってるデータのチェックをどうやって自動化するか
・いかにデータの正しさを保障するか
とかとか、こうやったらいんじゃねとかうちはこうやってるよ、みたいな事例とか、ご存知だったら教えてほしいですー
- で、うちの会社エンジニア募集しとります