こんにちは。
AMDlabの松原です。
以前Hadoopの話をしましたが、
Hadoopで処理した後のデータって、どう引っ張り出すのが良いか悩みますよね。
私はHadoopでHiveのテーブルを作成しているのですが、HiveQLを叩いて情報を引っ張っても良いですし、そもそもHiveテーブルの設定を変えてORC形式でなく、CSVファイルにデータを残しておけば、いろんな目的に使うことができるでしょう。
しかし、どう工夫しようと、このバッチ指向の仕組みは、即時性を求める現代社会には少し物足りなさを感じさせるわけです。
欲しい情報を簡単に選択し、すぐに結果を戻して欲しい。
そんな願いを叶えてくれるのが、Prestoです。
PrestoはFacebookが開発したものですが、数ペタバイト級の大規模データに対しても、対話的に返してくれる優れものです。
例えば、二つのテーブルをOuter Joinさせて、SelectするようなクエリをHiveQLで投げた場合、MapReduceの処理が流れ、1分ほど待たねばならなかったような処理も、Prestoを使えば、1秒未満で返ってきます。
最近も50万レコードを返してくるような(元のデータ数千万レコード)テーブルにもPrestoクエリを投げたところ、1秒程度で値が返って来ました。
恐ろしい子。
ちなみに、gemのpresto-clientを使ってPrestoのクエリを飛ばしているのですが、上に書いたような規模のデータを処理しようとすると、時たま「too deep nested json perse」というエラーが発生していました。
複雑すぎるクエリを発行すると起こるようでしたが、Githubを見に行ったところ、20日前ぐらいにその修正が行われておりました。
「too deep nested」でお困りのみなさん。gemのバージョンを0.5.7に上げましょう。
早く、建築業界のデータもいろいろ解析したい……!
COMMENTS